{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from unicodedata import normalize"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### ISO639 Meta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 202,
   "metadata": {},
   "outputs": [],
   "source": [
    "meta_df = pd.read_html('https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes')[0]\n",
    "meta_df.columns = ['639-2', '639-3', '639-5', '639-1', 'lang_name', 'scope', 'type', 'native_name', 'other_name']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 205,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>639-2[1]</th>\n",
       "      <th>639-3[2]</th>\n",
       "      <th>639-5[3]</th>\n",
       "      <th>639-1</th>\n",
       "      <th>Language name(s) from ISO 639-2[1]</th>\n",
       "      <th>Scope</th>\n",
       "      <th>Type</th>\n",
       "      <th>Native name(s)</th>\n",
       "      <th>Other name(s)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>aar</td>\n",
       "      <td>aar</td>\n",
       "      <td>NaN</td>\n",
       "      <td>aa</td>\n",
       "      <td>Afar</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>Qafaraf; ’Afar Af; Afaraf; Qafar af</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>abk</td>\n",
       "      <td>abk</td>\n",
       "      <td>NaN</td>\n",
       "      <td>ab</td>\n",
       "      <td>Abkhazian</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>Аҧсуа бызшәа Aƥsua bızšwa; Аҧсшәа Aƥsua</td>\n",
       "      <td>Abkhaz</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>ace</td>\n",
       "      <td>ace</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Achinese</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>بهسا اچيه</td>\n",
       "      <td>Acehnese</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>ach</td>\n",
       "      <td>ach</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Acoli</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>Lwo</td>\n",
       "      <td>Acholi</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>ada</td>\n",
       "      <td>ada</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Adangme</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>Dangme</td>\n",
       "      <td>Dangme</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>482</th>\n",
       "      <td>znd</td>\n",
       "      <td>NaN</td>\n",
       "      <td>znd</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Zande languages</td>\n",
       "      <td>Collective</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>483</th>\n",
       "      <td>zul</td>\n",
       "      <td>zul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>zu</td>\n",
       "      <td>Zulu</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>isiZulu</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>484</th>\n",
       "      <td>zun</td>\n",
       "      <td>zun</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Zuni</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>Shiwi'ma</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>485</th>\n",
       "      <td>zxx</td>\n",
       "      <td>zxx</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>No linguistic content; Not applicable</td>\n",
       "      <td>Special</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>486</th>\n",
       "      <td>zza</td>\n",
       "      <td>zza</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki</td>\n",
       "      <td>Macrolanguage</td>\n",
       "      <td>Living</td>\n",
       "      <td>kirmanckî; dimilkî; kirdkî; zazakî</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>487 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    639-2[1] 639-3[2] 639-5[3] 639-1  \\\n",
       "0        aar      aar      NaN    aa   \n",
       "1        abk      abk      NaN    ab   \n",
       "2        ace      ace      NaN   NaN   \n",
       "3        ach      ach      NaN   NaN   \n",
       "4        ada      ada      NaN   NaN   \n",
       "..       ...      ...      ...   ...   \n",
       "482      znd      NaN      znd   NaN   \n",
       "483      zul      zul      NaN    zu   \n",
       "484      zun      zun      NaN   NaN   \n",
       "485      zxx      zxx      NaN   NaN   \n",
       "486      zza      zza      NaN   NaN   \n",
       "\n",
       "                 Language name(s) from ISO 639-2[1]          Scope    Type  \\\n",
       "0                                              Afar     Individual  Living   \n",
       "1                                         Abkhazian     Individual  Living   \n",
       "2                                          Achinese     Individual  Living   \n",
       "3                                             Acoli     Individual  Living   \n",
       "4                                           Adangme     Individual  Living   \n",
       "..                                              ...            ...     ...   \n",
       "482                                 Zande languages     Collective     NaN   \n",
       "483                                            Zulu     Individual  Living   \n",
       "484                                            Zuni     Individual  Living   \n",
       "485           No linguistic content; Not applicable        Special     NaN   \n",
       "486  Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki  Macrolanguage  Living   \n",
       "\n",
       "                              Native name(s) Other name(s)  \n",
       "0        Qafaraf; ’Afar Af; Afaraf; Qafar af           NaN  \n",
       "1    Аҧсуа бызшәа Aƥsua bızšwa; Аҧсшәа Aƥsua        Abkhaz  \n",
       "2                                  بهسا اچيه      Acehnese  \n",
       "3                                        Lwo        Acholi  \n",
       "4                                     Dangme        Dangme  \n",
       "..                                       ...           ...  \n",
       "482                                      NaN           NaN  \n",
       "483                                  isiZulu           NaN  \n",
       "484                                 Shiwi'ma           NaN  \n",
       "485                                      NaN           NaN  \n",
       "486       kirmanckî; dimilkî; kirdkî; zazakî           NaN  \n",
       "\n",
       "[487 rows x 9 columns]"
      ]
     },
     "execution_count": 205,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.read_html('https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes')[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 196,
   "metadata": {},
   "outputs": [],
   "source": [
    "meta_df.loc[pd.isna(meta_df['639-3']), '639-3'] = meta_df.loc[pd.isna(meta_df['639-3']), '639-2']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 197,
   "metadata": {},
   "outputs": [],
   "source": [
    "meta_df[['639-1', '639-3', 'lang_name', 'native_name', 'other_name', 'scope', 'type']]\n",
    "meta_df.to_csv('iso_mapping.csv', index=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Load Wiki Data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.read_html('https://meta.wikimedia.org/wiki/List_of_Wikipedias')[0]\n",
    "df.columns = [\n",
    "    'no', 'lang', 'lang_local', 'wiki_code', 'articles', 'all_pages', \n",
    "    'edits', 'admins', 'users', 'active_users', 'files', 'depth'\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>lang</th>\n",
       "      <th>wiki_code</th>\n",
       "      <th>articles</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>English</td>\n",
       "      <td>en</td>\n",
       "      <td>6655312</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Cebuano</td>\n",
       "      <td>ceb</td>\n",
       "      <td>6123406</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>German</td>\n",
       "      <td>de</td>\n",
       "      <td>2799700</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Swedish</td>\n",
       "      <td>sv</td>\n",
       "      <td>2563113</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>French</td>\n",
       "      <td>fr</td>\n",
       "      <td>2521388</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>316</th>\n",
       "      <td>Dinka</td>\n",
       "      <td>din</td>\n",
       "      <td>308</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>317</th>\n",
       "      <td>Tigrinya</td>\n",
       "      <td>ti</td>\n",
       "      <td>261</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>318</th>\n",
       "      <td>Kalaallisut</td>\n",
       "      <td>kl</td>\n",
       "      <td>243</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>319</th>\n",
       "      <td>Dzongkha</td>\n",
       "      <td>dz</td>\n",
       "      <td>237</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>320</th>\n",
       "      <td>Cree</td>\n",
       "      <td>cr</td>\n",
       "      <td>161</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>321 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            lang wiki_code  articles\n",
       "0        English        en   6655312\n",
       "1        Cebuano       ceb   6123406\n",
       "2         German        de   2799700\n",
       "3        Swedish        sv   2563113\n",
       "4         French        fr   2521388\n",
       "..           ...       ...       ...\n",
       "316        Dinka       din       308\n",
       "317     Tigrinya        ti       261\n",
       "318  Kalaallisut        kl       243\n",
       "319     Dzongkha        dz       237\n",
       "320         Cree        cr       161\n",
       "\n",
       "[321 rows x 3 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[['lang','wiki_code','articles']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [],
   "source": [
    "indices = list(df.loc[df['wiki_code'].isin(['en','af','id','min','jv','su','bug', 'ace', 'bjn', 'nia', 'mad'])].no)\n",
    "wiki_codes = list(df.loc[df['wiki_code'].isin(['en','af','id','min','jv','su','bug', 'ace', 'bjn', 'nia', 'mad'])].wiki_code)\n",
    "lang_codes = list(map(lambda x: meta_df.loc[meta_df['639-1'] == x, '639-3'].values[0] if len(x) == 2 else x, wiki_codes))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1100x700 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.figure(figsize=(11,7))\n",
    "\n",
    "ax = sns.barplot(df, x='no', y='articles', log=True, palette='flare')\n",
    "plt.xticks(indices, lang_codes, rotation=60, fontsize=25)\n",
    "plt.yticks(fontsize=25)\n",
    "plt.xlabel('')\n",
    "plt.ylabel('#article',fontsize=25)\n",
    "for i, t in enumerate(ax.xaxis.get_ticklabels()):\n",
    "    if lang_codes[i] in ['ind','min','jav','sun','bug', 'ace', 'gor', 'ban', 'bjn', 'nia', 'mad']:\n",
    "        t.set_color('red')\n",
    "plt.savefig('wiki_indo_dist.pdf', bbox_inches='tight')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Other sources"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### CommonCrawl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "cc_df = pd.read_html('https://commoncrawl.github.io/cc-crawl-statistics/plots/languages')[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>639-2</th>\n",
       "      <th>639-3</th>\n",
       "      <th>639-5</th>\n",
       "      <th>639-1</th>\n",
       "      <th>lang_name</th>\n",
       "      <th>scope</th>\n",
       "      <th>type</th>\n",
       "      <th>native_name</th>\n",
       "      <th>other_name</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>aar</td>\n",
       "      <td>aar</td>\n",
       "      <td>NaN</td>\n",
       "      <td>aa</td>\n",
       "      <td>Afar</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>Qafaraf; ’Afar Af; Afaraf; Qafar af</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>abk</td>\n",
       "      <td>abk</td>\n",
       "      <td>NaN</td>\n",
       "      <td>ab</td>\n",
       "      <td>Abkhazian</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>Аҧсуа бызшәа Aƥsua bızšwa; Аҧсшәа Aƥsua</td>\n",
       "      <td>Abkhaz</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>ace</td>\n",
       "      <td>ace</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Achinese</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>بهسا اچيه</td>\n",
       "      <td>Acehnese</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>ach</td>\n",
       "      <td>ach</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Acoli</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>Lwo</td>\n",
       "      <td>Acholi</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>ada</td>\n",
       "      <td>ada</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Adangme</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>Dangme</td>\n",
       "      <td>Dangme</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>482</th>\n",
       "      <td>znd</td>\n",
       "      <td>NaN</td>\n",
       "      <td>znd</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Zande languages</td>\n",
       "      <td>Collective</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>483</th>\n",
       "      <td>zul</td>\n",
       "      <td>zul</td>\n",
       "      <td>NaN</td>\n",
       "      <td>zu</td>\n",
       "      <td>Zulu</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>isiZulu</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>484</th>\n",
       "      <td>zun</td>\n",
       "      <td>zun</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Zuni</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>Shiwi'ma</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>485</th>\n",
       "      <td>zxx</td>\n",
       "      <td>zxx</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>No linguistic content; Not applicable</td>\n",
       "      <td>Special</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>486</th>\n",
       "      <td>zza</td>\n",
       "      <td>zza</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki</td>\n",
       "      <td>Macrolanguage</td>\n",
       "      <td>Living</td>\n",
       "      <td>kirmanckî; dimilkî; kirdkî; zazakî</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>487 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    639-2 639-3 639-5 639-1                                       lang_name  \\\n",
       "0     aar   aar   NaN    aa                                            Afar   \n",
       "1     abk   abk   NaN    ab                                       Abkhazian   \n",
       "2     ace   ace   NaN   NaN                                        Achinese   \n",
       "3     ach   ach   NaN   NaN                                           Acoli   \n",
       "4     ada   ada   NaN   NaN                                         Adangme   \n",
       "..    ...   ...   ...   ...                                             ...   \n",
       "482   znd   NaN   znd   NaN                                 Zande languages   \n",
       "483   zul   zul   NaN    zu                                            Zulu   \n",
       "484   zun   zun   NaN   NaN                                            Zuni   \n",
       "485   zxx   zxx   NaN   NaN           No linguistic content; Not applicable   \n",
       "486   zza   zza   NaN   NaN  Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki   \n",
       "\n",
       "             scope    type                              native_name other_name  \n",
       "0       Individual  Living      Qafaraf; ’Afar Af; Afaraf; Qafar af        NaN  \n",
       "1       Individual  Living  Аҧсуа бызшәа Aƥsua bızšwa; Аҧсшәа Aƥsua     Abkhaz  \n",
       "2       Individual  Living                                بهسا اچيه   Acehnese  \n",
       "3       Individual  Living                                      Lwo     Acholi  \n",
       "4       Individual  Living                                   Dangme     Dangme  \n",
       "..             ...     ...                                      ...        ...  \n",
       "482     Collective     NaN                                      NaN        NaN  \n",
       "483     Individual  Living                                  isiZulu        NaN  \n",
       "484     Individual  Living                                 Shiwi'ma        NaN  \n",
       "485        Special     NaN                                      NaN        NaN  \n",
       "486  Macrolanguage  Living       kirmanckî; dimilkî; kirdkî; zazakî        NaN  \n",
       "\n",
       "[487 rows x 9 columns]"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "meta_df['639-1']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "scrolled": true,
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<unknown>\n",
      "aar Afar\n",
      "abk Abkhazian\n",
      "afr Afrikaans\n",
      "aka Akan\n",
      "amh Amharic\n",
      "ara Arabic\n",
      "asm Assamese\n",
      "aym Aymara\n",
      "aze Azerbaijani\n",
      "bak Bashkir\n",
      "bel Belarusian\n",
      "ben Bengali\n",
      "bih bih\n",
      "bis Bislama\n",
      "bod Tibetan\n",
      "bos Bosnian\n",
      "bre Breton\n",
      "bul Bulgarian\n",
      "cat Catalan; Valencian\n",
      "ceb Cebuano\n",
      "ces Czech\n",
      "chr Cherokee\n",
      "cos Corsican\n",
      "crs crs\n",
      "cym Welsh\n",
      "dan Danish\n",
      "deu German\n",
      "div Divehi; Dhivehi; Maldivian\n",
      "dzo Dzongkha\n",
      "ell Greek, Modern (1453–)\n",
      "eng English\n",
      "epo Esperanto\n",
      "est Estonian\n",
      "eus Basque\n",
      "fao Faroese\n",
      "fas Persian\n",
      "fij Fijian\n",
      "fin Finnish\n",
      "fra French\n",
      "fry Western Frisian\n",
      "gla Gaelic; Scottish Gaelic\n",
      "gle Irish\n",
      "glg Galician\n",
      "glv Manx\n",
      "got Gothic\n",
      "grn Guarani\n",
      "guj Gujarati\n",
      "hat Haitian; Haitian Creole\n",
      "hau Hausa\n",
      "haw Hawaiian\n",
      "heb Hebrew\n",
      "hin Hindi\n",
      "hmn Hmong; Mong\n",
      "hrv Croatian\n",
      "hun Hungarian\n",
      "hye Armenian\n",
      "ibo Igbo\n",
      "iku Inuktitut\n",
      "ile Interlingue; Occidental\n",
      "ina Interlingua (International Auxiliary Language Association)\n",
      "ind Indonesian\n",
      "ipk Inupiaq\n",
      "isl Icelandic\n",
      "ita Italian\n",
      "jav Javanese\n",
      "jpn Japanese\n",
      "kal Kalaallisut; Greenlandic\n",
      "kan Kannada\n",
      "kas Kashmiri\n",
      "kat Georgian\n",
      "kaz Kazakh\n",
      "kha Khasi\n",
      "khm Central Khmer\n",
      "kin Kinyarwanda\n",
      "kir Kirghiz; Kyrgyz\n",
      "kor Korean\n",
      "kur Kurdish\n",
      "lao Lao\n",
      "lat Latin\n",
      "lav Latvian\n",
      "lif lif\n",
      "lin Lingala\n",
      "lit Lithuanian\n",
      "ltz Luxembourgish; Letzeburgesch\n",
      "lug Ganda\n",
      "mal Malayalam\n",
      "mar Marathi\n",
      "mfe mfe\n",
      "mkd Macedonian\n",
      "mlg Malagasy\n",
      "mlt Maltese\n",
      "mon Mongolian\n",
      "mri Māori\n",
      "msa Malay\n",
      "mya Burmese\n",
      "nau Nauru\n",
      "nep Nepali\n",
      "nld Dutch; Flemish\n",
      "nno Norwegian Nynorsk; Nynorsk, Norwegian\n",
      "nor Norwegian\n",
      "nso Pedi; Sepedi; Northern Sotho\n",
      "nya Chichewa; Chewa; Nyanja\n",
      "oci Occitan (post 1500)\n",
      "ori Oriya\n",
      "orm Oromo\n",
      "pan Panjabi; Punjabi\n",
      "pol Polish\n",
      "por Portuguese\n",
      "pus Pushto; Pashto\n",
      "que Quechua\n",
      "roh Romansh\n",
      "ron Romanian; Moldavian; Moldovan\n",
      "run Rundi\n",
      "rus Russian\n",
      "sag Sango\n",
      "san Sanskrit\n",
      "sco Scots\n",
      "sin Sinhala; Sinhalese\n",
      "slk Slovak\n",
      "slv Slovenian\n",
      "smo Samoan\n",
      "sna Shona\n",
      "snd Sindhi\n",
      "som Somali\n",
      "sot Sotho, Southern\n",
      "spa Spanish; Castilian\n",
      "sqi Albanian\n",
      "srp Serbian\n",
      "ssw Swati\n",
      "sun Sundanese\n",
      "sux Sumerian\n",
      "swa Swahili\n",
      "swe Swedish\n",
      "syr Syriac\n",
      "tam Tamil\n",
      "tat Tatar\n",
      "tel Telugu\n",
      "tgk Tajik\n",
      "tgl Tagalog\n",
      "tha Thai\n",
      "tir Tigrinya\n",
      "ton Tonga (Tonga Islands)\n",
      "tsn Tswana\n",
      "tso Tsonga\n",
      "tuk Turkmen\n",
      "tur Turkish\n",
      "uig Uighur; Uyghur\n",
      "ukr Ukrainian\n",
      "urd Urdu\n",
      "uzb Uzbek\n",
      "ven Venda\n",
      "vie Vietnamese\n",
      "vol Volapük\n",
      "war Waray\n",
      "wol Wolof\n",
      "xho Xhosa\n",
      "yid Yiddish\n",
      "yor Yoruba\n",
      "zha Zhuang; Chuang\n",
      "zho Chinese\n",
      "zul Zulu\n"
     ]
    }
   ],
   "source": [
    "# CC -> Sundanese, Javanese, Indonesian\n",
    "for code in cc_df.loc[:,('crawl', 'language')].tolist():\n",
    "    if len(code) == 3:\n",
    "        print(code, meta_df.loc[meta_df['639-3'] == code, 'lang_name'].values[0] if code in meta_df['639-3'].tolist() else code)\n",
    "    else:\n",
    "        print(code)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Other Sources\n",
    "paracrawl = ['bg', 'ca', 'cs', 'da', 'de', 'el', 'en', 'es', 'et', 'eu', 'fi', 'fr', 'ga', 'gl', 'hr', 'hu', 'is', 'it', 'km', 'ko', 'lt', 'lv', 'mt', 'my', 'nb', 'ne', 'nl', 'nn', 'pl', 'ps', 'pt', 'ro', 'ru', 'si', 'sk', 'sl', 'so', 'sv', 'sw', 'tl', 'uk', 'zh']\n",
    "bible = ['aau', 'aaz', 'abx', 'aby', 'acf', 'acu', 'adz', 'aey', 'agd', 'agg', 'agm', 'agn', 'agr', 'agu', 'aia', 'ake', 'alp', 'alq', 'als', 'aly', 'ame', 'amk', 'amp', 'amr', 'amu', 'anh', 'anv', 'aoi', 'aoj', 'apb', 'apn', 'apu', 'apy', 'arb', 'arl', 'arn', 'arp', 'aso', 'ata', 'atb', 'atd', 'atg', 'auc', 'aui', 'auy', 'avt', 'awb', 'awk', 'awx', 'azg', 'azz', 'bao', 'bbb', 'bbr', 'bch', 'bco', 'bdd', 'bea', 'bel', 'bgs', 'bgt', 'bhg', 'bhl', 'big', 'bjr', 'bjv', 'bkd', 'bki', 'bkq', 'bkx', 'bla', 'blw', 'blz', 'bmh', 'bmk', 'bmr', 'bnp', 'boa', 'boj', 'bon', 'box', 'bqc', 'bre', 'bsn', 'bsp', 'bss', 'buk', 'bus', 'bvr', 'bxh', 'byx', 'bzd', 'bzj', 'cab', 'caf', 'cao', 'cap', 'car', 'cav', 'cax', 'cbc', 'cbi', 'cbk', 'cbr', 'cbs', 'cbt', 'cbu', 'cbv', 'cco', 'ces', 'cgc', 'cha', 'chd', 'chf', 'chk', 'chq', 'chz', 'cjo', 'cjv', 'cle', 'clu', 'cme', 'cmn', 'cni', 'cnl', 'cnt', 'cof', 'con', 'cop', 'cot', 'cpa', 'cpb', 'cpc', 'cpu', 'crn', 'crx', 'cso', 'cta', 'ctp', 'ctu', 'cub', 'cuc', 'cui', 'cut', 'cux', 'cwe', 'daa', 'dad', 'dah', 'ded', 'deu', 'dgr', 'dgz', 'dif', 'dik', 'dji', 'djk', 'dob', 'dwr', 'dww', 'dwy', 'eko', 'emi', 'emp', 'eng', 'epo', 'eri', 'ese', 'etr', 'faa', 'fai', 'far', 'for', 'fra', 'fuf', 'gai', 'gam', 'gaw', 'gdn', 'gdr', 'geb', 'gfk', 'ghs', 'gia', 'glk', 'gmv', 'gng', 'gnn', 'gnw', 'gof', 'grc', 'gub', 'guh', 'gui', 'gul', 'gum', 'guo', 'gvc', 'gvf', 'gwi', 'gym', 'gyr', 'hat', 'haw', 'hbo', 'hch', 'heb', 'heg', 'hix', 'hla', 'hlt', 'hns', 'hop', 'hrv', 'hub', 'hui', 'hus', 'huu', 'huv', 'hvn', 'ign', 'ikk', 'ikw', 'imo', 'inb', 'ind', 'ino', 'iou', 'ipi', 'ita', 'jac', 'jao', 'jic', 'jiv', 'jpn', 'jvn', 'kaq', 'kbc', 'kbh', 'kbm', 'kdc', 'kde', 'kdl', 'kek', 'ken', 'kew', 'kgk', 'kgp', 'khs', 'kje', 'kjs', 'kkc', 'kky', 'klt', 'klv', 'kms', 'kmu', 'kne', 'knf', 'knj', 'kos', 'kpf', 'kpg', 'kpj', 'kpw', 'kqa', 'kqc', 'kqf', 'kql', 'kqw', 'ksj', 'ksr', 'ktm', 'kto', 'kud', 'kue', 'kup', 'kvn', 'kwd', 'kwf', 'kwi', 'kwj', 'kyf', 'kyg', 'kyq', 'kyz', 'kze', 'lac', 'lat', 'lbb', 'leu', 'lex', 'lgl', 'lid', 'lif', 'lww', 'maa', 'maj', 'maq', 'mau', 'mav', 'maz', 'mbb', 'mbc', 'mbh', 'mbl', 'mbt', 'mca', 'mcb', 'mcd', 'mcf', 'mcp', 'mdy', 'med', 'mee', 'mek', 'meq', 'met', 'meu', 'mgh', 'mgw', 'mhl', 'mib', 'mic', 'mie', 'mig', 'mih', 'mil', 'mio', 'mir', 'mit', 'miz', 'mjc', 'mkn', 'mks', 'mlh', 'mlp', 'mmx', 'mna', 'mop', 'mox', 'mph', 'mpj', 'mpm', 'mpp', 'mps', 'mpx', 'mqb', 'mqj', 'msb', 'msc', 'msk', 'msm', 'msy', 'mti', 'muy', 'mva', 'mvn', 'mwc', 'mxb', 'mxp', 'mxq', 'mxt', 'myu', 'myw', 'myy', 'mzz', 'nab', 'naf', 'nak', 'nay', 'nbq', 'nca', 'nch', 'ncj', 'ncl', 'ncu', 'ndj', 'nfa', 'ngp', 'ngu', 'nhg', 'nhi', 'nho', 'nhr', 'nhu', 'nhw', 'nhy', 'nif', 'nin', 'nko', 'nld', 'nlg', 'nna', 'nnq', 'not', 'nou', 'npl', 'nsn', 'nss', 'ntj', 'ntp', 'nwi', 'nyu', 'obo', 'ong', 'ons', 'ood', 'opm', 'ote', 'otm', 'otn', 'otq', 'ots', 'pab', 'pad', 'pah', 'pao', 'pes', 'pib', 'pio', 'pir', 'pjt', 'plu', 'pma', 'poe', 'poi', 'pon', 'poy', 'ppo', 'prf', 'pri', 'ptp', 'ptu', 'pwg', 'quc', 'quf', 'quh', 'qul', 'qup', 'qvc', 'qve', 'qvh', 'qvm', 'qvn', 'qvs', 'qvw', 'qvz', 'qwh', 'qxh', 'qxn', 'qxo', 'rai', 'rkb', 'rmc', 'roo', 'rop', 'rro', 'ruf', 'rug', 'rus', 'sab', 'san', 'sbe', 'seh', 'sey', 'sgz', 'shj', 'shp', 'sim', 'sja', 'sll', 'smk', 'snc', 'snn', 'sny', 'som', 'soq', 'spa', 'spl', 'spm', 'sps', 'spy', 'sri', 'srm', 'srn', 'srp', 'srq', 'ssd', 'ssg', 'ssx', 'stp', 'sua', 'sue', 'sus', 'suz', 'swe', 'swh', 'swp', 'sxb', 'tac', 'tav', 'tbc', 'tbl', 'tbo', 'tbz', 'tca', 'tee', 'ter', 'tew', 'tfr', 'tgp', 'tif', 'tim', 'tiy', 'tke', 'tku', 'tna', 'tnc', 'tnn', 'tnp', 'toc', 'tod', 'toj', 'ton', 'too', 'top', 'tos', 'tpt', 'trc', 'tsw', 'ttc', 'tue', 'tuo', 'txu', 'ubr', 'udu', 'ukr', 'uli', 'ura', 'urb', 'usa', 'usp', 'uvl', 'vid', 'vie', 'viv', 'vmy', 'waj', 'wal', 'wap', 'wat', 'wbp', 'wed', 'wer', 'wim', 'wmt', 'wmw', 'wnc', 'wnu', 'wos', 'wrk', 'wro', 'wsk', 'wuv', 'xav', 'xed', 'xla', 'xnn', 'xon', 'xsi', 'xtd', 'xtm', 'yaa', 'yad', 'yal', 'yap', 'yaq', 'yby', 'ycn', 'yka', 'yml', 'yre', 'yuj', 'yut', 'yuw', 'yva', 'zaa', 'zab', 'zac', 'zad', 'zai', 'zaj', 'zam', 'zao', 'zar', 'zas', 'zat', 'zav', 'zaw', 'zca', 'zia', 'ziw', 'zos', 'zpc', 'zpl', 'zpo', 'zpq', 'zpu', 'zpv', 'zpz', 'zsr', 'ztq', 'zty', 'zyp']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 bg Bulgarian\n",
      "1 ca Catalan; Valencian\n",
      "2 cs Czech\n",
      "3 da Danish\n",
      "4 de German\n",
      "5 el Greek, Modern (1453–)\n",
      "6 en English\n",
      "7 es Spanish; Castilian\n",
      "8 et Estonian\n",
      "9 eu Basque\n",
      "10 fi Finnish\n",
      "11 fr French\n",
      "12 ga Irish\n",
      "13 gl Galician\n",
      "14 hr Croatian\n",
      "15 hu Hungarian\n",
      "16 is Icelandic\n",
      "17 it Italian\n",
      "18 km Central Khmer\n",
      "19 ko Korean\n",
      "20 lt Lithuanian\n",
      "21 lv Latvian\n",
      "22 mt Maltese\n",
      "23 my Burmese\n",
      "24 nb Bokmål, Norwegian; Norwegian Bokmål\n",
      "25 ne Nepali\n",
      "26 nl Dutch; Flemish\n",
      "27 nn Norwegian Nynorsk; Nynorsk, Norwegian\n",
      "28 pl Polish\n",
      "29 ps Pushto; Pashto\n",
      "30 pt Portuguese\n",
      "31 ro Romanian; Moldavian; Moldovan\n",
      "32 ru Russian\n",
      "33 si Sinhala; Sinhalese\n",
      "34 sk Slovak\n",
      "35 sl Slovenian\n",
      "36 so Somali\n",
      "37 sv Swedish\n",
      "38 sw Swahili\n",
      "39 tl Tagalog\n",
      "40 uk Ukrainian\n",
      "41 zh Chinese\n"
     ]
    }
   ],
   "source": [
    "for i, code in enumerate(paracrawl):\n",
    "    print(i, code, meta_df.loc[meta_df['639-1'] == code, 'lang_name'].values[0] if code in meta_df['639-1'].tolist() else code)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--2023-05-14 12:44:14--  https://iso639-3.sil.org/sites/iso639-3/files/downloads/iso-639-3_Name_Index.tab\n",
      "Resolving iso639-3.sil.org (iso639-3.sil.org)... 104.22.11.254, 172.67.29.248, 104.22.10.254, ...\n",
      "Connecting to iso639-3.sil.org (iso639-3.sil.org)|104.22.11.254|:443... connected.\n",
      "HTTP request sent, awaiting response... 200 OK\n",
      "Length: 211387 (206K)\n",
      "Saving to: ‘iso-639-3_Name_Index.tab’\n",
      "\n",
      "iso-639-3_Name_Inde 100%[===================>] 206.43K   453KB/s    in 0.5s    \n",
      "\n",
      "2023-05-14 12:44:16 (453 KB/s) - ‘iso-639-3_Name_Index.tab’ saved [211387/211387]\n",
      "\n"
     ]
    }
   ],
   "source": [
    "!wget https://iso639-3.sil.org/sites/iso639-3/files/downloads/iso-639-3_Name_Index.tab"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {
    "scrolled": true,
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 aau Abau\n",
      "1 aaz Amarasi\n",
      "2 abx Inabaknon\n",
      "3 aby Aneme Wake\n",
      "4 acf Saint Lucian Creole French\n",
      "5 acu Achuar-Shiwiar\n",
      "6 adz Adzera\n",
      "7 aey Amele\n",
      "8 agd Agarabi\n",
      "9 agg Angor\n",
      "10 agm Angaataha\n",
      "11 agn Agutaynen\n",
      "12 agr Aguaruna\n",
      "13 agu Aguacateco\n",
      "14 aia Arosi\n",
      "15 ake Akawaio\n",
      "16 alp Alune\n",
      "17 alq Algonquin\n",
      "18 als Tosk Albanian\n",
      "19 aly Alyawarr\n",
      "20 ame Yanesha'\n",
      "21 amk Ambai\n",
      "22 amp Alamblak\n",
      "23 amr Amarakaeri\n",
      "24 amu Guerrero Amuzgo\n",
      "25 anh Nend\n",
      "26 anv Denya\n",
      "27 aoi Anindilyakwa\n",
      "28 aoj Mufian\n",
      "29 apb Sa'a\n",
      "30 apn Apinayé\n",
      "31 apu Apurinã\n",
      "32 apy Apalaí\n",
      "33 arb Standard Arabic\n",
      "34 arl Arabela\n",
      "35 arn Mapuche\n",
      "36 arp Arapaho\n",
      "37 aso Dano\n",
      "38 ata Pele-Ata\n",
      "39 atb Zaiwa\n",
      "40 atd Ata Manobo\n",
      "41 atg Ivbie North-Okpela-Arhe\n",
      "42 auc Waorani\n",
      "43 aui Anuki\n",
      "44 auy Awiyaana\n",
      "45 avt Au\n",
      "46 awb Awa (Papua New Guinea)\n",
      "47 awk Awabakal\n",
      "48 awx Awara\n",
      "49 azg San Pedro Amuzgos Amuzgo\n",
      "50 azz Highland Puebla Nahuatl\n",
      "51 bao Waimaha\n",
      "52 bbb Barai\n",
      "53 bbr Girawa\n",
      "54 bch Bariai\n",
      "55 bco Kaluli\n",
      "56 bdd Bunama\n",
      "57 bea Beaver\n",
      "58 bel Belarusian\n",
      "59 bgs Tagabawa\n",
      "60 bgt Bughotu\n",
      "61 bhg Binandere\n",
      "62 bhl Bimin\n",
      "63 big Biangai\n",
      "64 bjr Binumarien\n",
      "65 bjv Bedjond\n",
      "66 bkd Binukid\n",
      "67 bki Baki\n",
      "68 bkq Bakairí\n",
      "69 bkx Baikeno\n",
      "70 bla Siksika\n",
      "71 blw Balangao\n",
      "72 blz Balantak\n",
      "73 bmh Kein\n",
      "74 bmk Ghayavi\n",
      "75 bmr Muinane\n",
      "76 bnp Bola\n",
      "77 boa Bora\n",
      "78 boj Anjam\n",
      "79 bon Bine\n",
      "80 box Buamu\n",
      "81 bqc Boko (Benin)\n",
      "82 bre Breton\n",
      "83 bsn Barasana-Eduria\n",
      "84 bsp Baga Sitemu\n",
      "85 bss Akoose\n",
      "86 buk Bugawac\n",
      "87 bus Bokobaru\n",
      "88 bvr Burarra\n",
      "89 bxh Buhutu\n",
      "90 byx Qaqet\n",
      "91 bzd Bribri\n",
      "92 bzj Belize Kriol English\n",
      "93 cab Garifuna\n",
      "94 caf Southern Carrier\n",
      "95 cao Chácobo\n",
      "96 cap Chipaya\n",
      "97 car Galibi Carib\n",
      "98 cav Cavineña\n",
      "99 cax Chiquitano\n",
      "100 cbc Carapana\n",
      "101 cbi Chachi\n",
      "102 cbk Chavacano\n",
      "103 cbr Cashibo-Cacataibo\n",
      "104 cbs Cashinahua\n",
      "105 cbt Chayahuita\n",
      "106 cbu Candoshi-Shapra\n",
      "107 cbv Cacua\n",
      "108 cco Comaltepec Chinantec\n",
      "109 ces Czech\n",
      "110 cgc Kagayanen\n",
      "111 cha Chamorro\n",
      "112 chd Highland Oaxaca Chontal\n",
      "113 chf Tabasco Chontal\n",
      "114 chk Chuukese\n",
      "115 chq Quiotepec Chinantec\n",
      "116 chz Ozumacín Chinantec\n",
      "117 cjo Ashéninka Pajonal\n",
      "118 cjv Chuave\n",
      "119 cle Lealao Chinantec\n",
      "120 clu Caluyanun\n",
      "121 cme Cerma\n",
      "122 cmn Mandarin Chinese\n",
      "123 cni Asháninka\n",
      "124 cnl Lalana Chinantec\n",
      "125 cnt Tepetotutla Chinantec\n",
      "126 cof Colorado\n",
      "127 con Cofán\n",
      "128 cop Coptic\n",
      "129 cot Caquinte\n",
      "130 cpa Palantla Chinantec\n",
      "131 cpb Ucayali-Yurúa Ashéninka\n",
      "132 cpc Ajyíninka Apurucayali\n",
      "133 cpu Pichis Ashéninka\n",
      "134 crn El Nayar Cora\n",
      "135 crx Carrier\n",
      "136 cso Sochiapam Chinantec\n",
      "137 cta Tataltepec Chatino\n",
      "138 ctp Western Highland Chatino\n",
      "139 ctu Chol\n",
      "140 cub Cubeo\n",
      "141 cuc Usila Chinantec\n",
      "142 cui Cuiba\n",
      "143 cut Teutila Cuicatec\n",
      "144 cux Tepeuxila Cuicatec\n",
      "145 cwe Kwere\n",
      "146 daa Dangaléat\n",
      "147 dad Marik\n",
      "148 dah Gwahatike\n",
      "149 ded Dedua\n",
      "150 deu German\n",
      "151 dgr Dogrib\n",
      "152 dgz Daga\n",
      "153 dif Dieri\n",
      "154 dik Southwestern Dinka\n",
      "155 dji Djinang\n",
      "156 djk Businenge Tongo\n",
      "157 dob Dobu\n",
      "158 dwr Dawro\n",
      "159 dww Dawawa\n",
      "160 dwy Dhuwaya\n",
      "161 eko Koti\n",
      "162 emi Mussau-Emira\n",
      "163 emp Northern Emberá\n",
      "164 eng English\n",
      "165 epo Esperanto\n",
      "166 eri Ogea\n",
      "167 ese Ese Ejja\n",
      "168 etr Edolo\n",
      "169 faa Fasu\n",
      "170 fai Faiwol\n",
      "171 far Fataleka\n",
      "172 for Fore\n",
      "173 fra French\n",
      "174 fuf Pular\n",
      "175 gai Borei\n",
      "176 gam Kandawo\n",
      "177 gaw Nobonob\n",
      "178 gdn Umanakaina\n",
      "179 gdr Wipi\n",
      "180 geb Kire\n",
      "181 gfk Patpatar\n",
      "182 ghs Guhu-Samane\n",
      "183 gia Kija\n",
      "184 glk Gilaki\n",
      "185 gmv Gamo\n",
      "186 gng Ngangam\n",
      "187 gnn Gumatj\n",
      "188 gnw Western Bolivian Guaraní\n",
      "189 gof Gofa\n",
      "190 grc Ancient Greek (to 1453)\n",
      "191 gub Guajajára\n",
      "192 guh Guahibo\n",
      "193 gui Eastern Bolivian Guaraní\n",
      "194 gul Sea Island Creole English\n",
      "195 gum Guambiano\n",
      "196 guo Guayabero\n",
      "197 gvc Guanano\n",
      "198 gvf Golin\n",
      "199 gwi Gwichʼin\n",
      "200 gym Ngäbere\n",
      "201 gyr Guarayu\n",
      "202 hat Haitian\n",
      "203 haw Hawaiian\n",
      "204 hbo Ancient Hebrew\n",
      "205 hch Huichol\n",
      "206 heb Hebrew\n",
      "207 heg Helong\n",
      "208 hix Hixkaryána\n",
      "209 hla Halia\n",
      "210 hlt Matu Chin\n",
      "211 hns Caribbean Hindustani\n",
      "212 hop Hopi\n",
      "213 hrv Croatian\n",
      "214 hub Huambisa\n",
      "215 hui Huli\n",
      "216 hus Huastec\n",
      "217 huu Murui Huitoto\n",
      "218 huv San Mateo Del Mar Huave\n",
      "219 hvn Sabu\n",
      "220 ign Ignaciano\n",
      "221 ikk Ika\n",
      "222 ikw Ikwere\n",
      "223 imo Imbongu\n",
      "224 inb Inga\n",
      "225 ind Indonesian\n",
      "226 ino Inoke-Yate\n",
      "227 iou Tuma-Irumu\n",
      "228 ipi Ipili\n",
      "229 ita Italian\n",
      "230 jac Jakalteko\n",
      "231 jao Yanyuwa\n",
      "232 jic Tol\n",
      "233 jiv Shuar\n",
      "234 jpn Japanese\n",
      "235 jvn Caribbean Javanese\n",
      "236 kaq Capanahua\n",
      "237 kbc Kadiwéu\n",
      "238 kbh Camsá\n",
      "239 kbm Iwal\n",
      "240 kdc Kutu\n",
      "241 kde Makonde\n",
      "242 kdl Tsikimba\n",
      "243 kek Kekchí\n",
      "244 ken Kenyang\n",
      "245 kew West Kewa\n",
      "246 kgk Kaiwá\n",
      "247 kgp Kaingang\n",
      "248 khs Kasua\n",
      "249 kje Kisar\n",
      "250 kjs East Kewa\n",
      "251 kkc Odoodee\n",
      "252 kky Guguyimidjir\n",
      "253 klt Nukna\n",
      "254 klv Maskelynes\n",
      "255 kms Kamasau\n",
      "256 kmu Kanite\n",
      "257 kne Kankanaey\n",
      "258 knf Mankanya\n",
      "259 knj Western Kanjobal\n",
      "260 kos Kosraean\n",
      "261 kpf Komba\n",
      "262 kpg Kapingamarangi\n",
      "263 kpj Karajá\n",
      "264 kpw Kobon\n",
      "265 kqa Mum\n",
      "266 kqc Doromu-Koki\n",
      "267 kqf Kakabai\n",
      "268 kql Kyenele\n",
      "269 kqw Kandas\n",
      "270 ksj Uare\n",
      "271 ksr Borong\n",
      "272 ktm Kurti\n",
      "273 kto Kuot\n",
      "274 kud 'Auhelawa\n",
      "275 kue Kuman (Papua New Guinea)\n",
      "276 kup Kunimaipa\n",
      "277 kvn Border Kuna\n",
      "278 kwd Kwaio\n",
      "279 kwf Kwara'ae\n",
      "280 kwi Awa-Cuaiquer\n",
      "281 kwj Kwanga\n",
      "282 kyf Kouya\n",
      "283 kyg Keyagana\n",
      "284 kyq Kenga\n",
      "285 kyz Kayabí\n",
      "286 kze Kosena\n",
      "287 lac Lacandon\n",
      "288 lat Latin\n",
      "289 lbb Label\n",
      "290 leu Kara (Papua New Guinea)\n",
      "291 lex Luang\n",
      "292 lgl Wala\n",
      "293 lid Nyindrou\n",
      "294 lif Limbu\n",
      "295 lww Lewo\n",
      "296 maa San Jerónimo Tecóatl Mazatec\n",
      "297 maj Jalapa De Díaz Mazatec\n",
      "298 maq Chiquihuitlán Mazatec\n",
      "299 mau Huautla Mazatec\n",
      "300 mav Sateré-Mawé\n",
      "301 maz Central Mazahua\n",
      "302 mbb Western Bukidnon Manobo\n",
      "303 mbc Macushi\n",
      "304 mbh Mangseng\n",
      "305 mbl Maxakalí\n",
      "306 mbt Matigsalug Manobo\n",
      "307 mca Maca\n",
      "308 mcb Machiguenga\n",
      "309 mcd Sharanahua\n",
      "310 mcf Matsés\n",
      "311 mcp Makaa\n",
      "312 mdy Male (Ethiopia)\n",
      "313 med Melpa\n",
      "314 mee Mengen\n",
      "315 mek Mekeo\n",
      "316 meq Merey\n",
      "317 met Mato\n",
      "318 meu Motu\n",
      "319 mgh Makhuwa-Meetto\n",
      "320 mgw Matumbi\n",
      "321 mhl Mauwake\n",
      "322 mib Atatláhuca Mixtec\n",
      "323 mic Micmac\n",
      "324 mie Ocotepec Mixtec\n",
      "325 mig San Miguel El Grande Mixtec\n",
      "326 mih Chayuco Mixtec\n",
      "327 mil Peñoles Mixtec\n",
      "328 mio Pinotepa Nacional Mixtec\n",
      "329 mir Isthmus Mixe\n",
      "330 mit Southern Puebla Mixtec\n",
      "331 miz Coatzospan Mixtec\n",
      "332 mjc San Juan Colorado Mixtec\n",
      "333 mkn Kupang Malay\n",
      "334 mks Silacayoapan Mixtec\n",
      "335 mlh Mape\n",
      "336 mlp Bargam\n",
      "337 mmx Madak\n",
      "338 mna Mbula\n",
      "339 mop Mopán Maya\n",
      "340 mox Molima\n",
      "341 mph Maung\n",
      "342 mpj Martu Wangka\n",
      "343 mpm Yosondúa Mixtec\n",
      "344 mpp Migabac\n",
      "345 mps Dadibi\n",
      "346 mpx Misima-Panaeati\n",
      "347 mqb Mbuko\n",
      "348 mqj Mamasa\n",
      "349 msb Masbatenyo\n",
      "350 msc Sankaran Maninka\n",
      "351 msk Mansaka\n",
      "352 msm Agusan Manobo\n",
      "353 msy Aruamu\n",
      "354 mti Maiwa (Papua New Guinea)\n",
      "355 muy Muyang\n",
      "356 mva Manam\n",
      "357 mvn Minaveha\n",
      "358 mwc Are\n",
      "359 mxb Tezoatlán Mixtec\n",
      "360 mxp Tlahuitoltepec Mixe\n",
      "361 mxq Juquila Mixe\n",
      "362 mxt Jamiltepec Mixtec\n",
      "363 myu Mundurukú\n",
      "364 myw Muyuw\n",
      "365 myy Macuna\n",
      "366 mzz Maiadomu\n",
      "367 nab Southern Nambikuára\n",
      "368 naf Nabak\n",
      "369 nak Nakanai\n",
      "370 nay Ngarrindjeri\n",
      "371 nbq Nggem\n",
      "372 nca Iyo\n",
      "373 nch Central Huasteca Nahuatl\n",
      "374 ncj Northern Puebla Nahuatl\n",
      "375 ncl Michoacán Nahuatl\n",
      "376 ncu Chumburung\n",
      "377 ndj Ndamba\n",
      "378 nfa Dhao\n",
      "379 ngp Ngulu\n",
      "380 ngu Guerrero Nahuatl\n",
      "381 nhg Tetelcingo Nahuatl\n",
      "382 nhi Zacatlán-Ahuacatlán-Tepetzintla Nahuatl\n",
      "383 nho Takuu\n",
      "384 nhr Naro\n",
      "385 nhu Noone\n",
      "386 nhw Western Huasteca Nahuatl\n",
      "387 nhy Northern Oaxaca Nahuatl\n",
      "388 nif Nek\n",
      "389 nin Ninzo\n",
      "390 nko Nkonya\n",
      "391 nld Dutch\n",
      "392 nlg Gela\n",
      "393 nna Nyangumarta\n",
      "394 nnq Ngindo\n",
      "395 not Nomatsiguenga\n",
      "396 nou Ewage-Notu\n",
      "397 npl Southeastern Puebla Nahuatl\n",
      "398 nsn Nehan\n",
      "399 nss Nali\n",
      "400 ntj Ngaanyatjarra\n",
      "401 ntp Northern Tepehuan\n",
      "402 nwi Southwest Tanna\n",
      "403 nyu Nyungwe\n",
      "404 obo Obo Manobo\n",
      "405 ong Olo\n",
      "406 ons Ono\n",
      "407 ood Tohono O'odham\n",
      "408 opm Oksapmin\n",
      "409 ote Mezquital Otomi\n",
      "410 otm Eastern Highland Otomi\n",
      "411 otn Tenango Otomi\n",
      "412 otq Querétaro Otomi\n",
      "413 ots Estado de México Otomi\n",
      "414 pab Parecís\n",
      "415 pad Paumarí\n",
      "416 pah Tenharim\n",
      "417 pao Northern Paiute\n",
      "418 pes Iranian Persian\n",
      "419 pib Yine\n",
      "420 pio Piapoco\n",
      "421 pir Piratapuyo\n",
      "422 pjt Pitjantjatjara\n",
      "423 plu Palikúr\n",
      "424 pma Paama\n",
      "425 poe San Juan Atzingo Popoloca\n",
      "426 poi Highland Popoluca\n",
      "427 pon Pohnpeian\n",
      "428 poy Pogolo\n",
      "429 ppo Folopa\n",
      "430 prf Paranan\n",
      "431 pri Paicî\n",
      "432 ptp Patep\n",
      "433 ptu Bambam\n",
      "434 pwg Gapapaiwa\n",
      "435 quc K'iche'\n",
      "436 quf Lambayeque Quechua\n",
      "437 quh South Bolivian Quechua\n",
      "438 qul North Bolivian Quechua\n",
      "439 qup Southern Pastaza Quechua\n",
      "440 qvc Cajamarca Quechua\n",
      "441 qve Eastern Apurímac Quechua\n",
      "442 qvh Huamalíes-Dos de Mayo Huánuco Quechua\n",
      "443 qvm Margos-Yarowilca-Lauricocha Quechua\n",
      "444 qvn North Junín Quechua\n",
      "445 qvs San Martín Quechua\n",
      "446 qvw Huaylla Wanca Quechua\n",
      "447 qvz Northern Pastaza Quichua\n",
      "448 qwh Huaylas Ancash Quechua\n",
      "449 qxh Panao Huánuco Quechua\n",
      "450 qxn Northern Conchucos Ancash Quechua\n",
      "451 qxo Southern Conchucos Ancash Quechua\n",
      "452 rai Ramoaaina\n",
      "453 rkb Rikbaktsa\n",
      "454 rmc Carpathian Romani\n",
      "455 roo Rotokas\n",
      "456 rop Kriol\n",
      "457 rro Waima\n",
      "458 ruf Luguru\n",
      "459 rug Roviana\n",
      "460 rus Russian\n",
      "461 sab Buglere\n",
      "462 san Sanskrit\n",
      "463 sbe Saliba\n",
      "464 seh Sena\n",
      "465 sey Secoya\n",
      "466 sgz Sursurunga\n",
      "467 shj Shatt\n",
      "468 shp Shipibo-Conibo\n",
      "469 sim Mende (Papua New Guinea)\n",
      "470 sja Epena\n",
      "471 sll Salt-Yui\n",
      "472 smk Bolinao\n",
      "473 snc Sinaugoro\n",
      "474 snn Siona\n",
      "475 sny Saniyo-Hiyewe\n",
      "476 som Somali\n",
      "477 soq Kanasi\n",
      "478 spa Castilian\n",
      "479 spl Selepet\n",
      "480 spm Akukem\n",
      "481 sps Saposa\n",
      "482 spy Sabaot\n",
      "483 sri Siriano\n",
      "484 srm Saramaccan\n",
      "485 srn Sranan Tongo\n",
      "486 srp Serbian\n",
      "487 srq Sirionó\n",
      "488 ssd Siroi\n",
      "489 ssg Seimat\n",
      "490 ssx Samberigi\n",
      "491 stp Southeastern Tepehuan\n",
      "492 sua Sulka\n",
      "493 sue Suena\n",
      "494 sus Susu\n",
      "495 suz Sunwar\n",
      "496 swe Swedish\n",
      "497 swh Kiswahili\n",
      "498 swp Suau\n",
      "499 sxb Suba\n",
      "500 tac Lowland Tarahumara\n",
      "501 tav Tatuyo\n",
      "502 tbc Takia\n",
      "503 tbl Tboli\n",
      "504 tbo Tawala\n",
      "505 tbz Ditammari\n",
      "506 tca Ticuna\n",
      "507 tee Huehuetla Tepehua\n",
      "508 ter Tereno\n",
      "509 tew Tewa (USA)\n",
      "510 tfr Teribe\n",
      "511 tgp Tangoa\n",
      "512 tif Tifal\n",
      "513 tim Timbe\n",
      "514 tiy Tiruray\n",
      "515 tke Takwane\n",
      "516 tku Upper Necaxa Totonac\n",
      "517 tna Tacana\n",
      "518 tnc Tanimuca-Retuarã\n",
      "519 tnn North Tanna\n",
      "520 tnp Whitesands\n",
      "521 toc Coyutla Totonac\n",
      "522 tod Toma\n",
      "523 toj Tojolabal\n",
      "524 ton Tonga (Tonga Islands)\n",
      "525 too Xicotepec De Juárez Totonac\n",
      "526 top Papantla Totonac\n",
      "527 tos Highland Totonac\n",
      "528 tpt Tlachichilco Tepehua\n",
      "529 trc Copala Triqui\n",
      "530 tsw Tsishingini\n",
      "531 ttc Tektiteko\n",
      "532 tue Tuyuca\n",
      "533 tuo Tucano\n",
      "534 txu Kayapó\n",
      "535 ubr Ubir\n",
      "536 udu Uduk\n",
      "537 ukr Ukrainian\n",
      "538 uli Ulithian\n",
      "539 ura Urarina\n",
      "540 urb Kaapor\n",
      "541 usa Usarufa\n",
      "542 usp Uspanteco\n",
      "543 uvl Lote\n",
      "544 vid Vidunda\n",
      "545 vie Vietnamese\n",
      "546 viv Iduna\n",
      "547 vmy Ayautla Mazatec\n",
      "548 waj Waffa\n",
      "549 wal Wolaitta\n",
      "550 wap Wapishana\n",
      "551 wat Kaninuwa\n",
      "552 wbp Warlpiri\n",
      "553 wed Wedau\n",
      "554 wer Weri\n",
      "555 wim Wik-Mungkan\n",
      "556 wmt Walmajarri\n",
      "557 wmw Mwani\n",
      "558 wnc Wantoat\n",
      "559 wnu Usan\n",
      "560 wos Hanga Hundi\n",
      "561 wrk Garrwa\n",
      "562 wro Worrorra\n",
      "563 wsk Waskia\n",
      "564 wuv Wuvulu-Aua\n",
      "565 xav Xavánte\n",
      "566 xed Hdi\n",
      "567 xla Kamula\n",
      "568 xnn Northern Kankanay\n",
      "569 xon Konkomba\n",
      "570 xsi Sio\n",
      "571 xtd Diuxi-Tilantongo Mixtec\n",
      "572 xtm Magdalena Peñasco Mixtec\n",
      "573 yaa Yaminahua\n",
      "574 yad Yagua\n",
      "575 yal Yalunka\n",
      "576 yap Yapese\n",
      "577 yaq Yaqui\n",
      "578 yby Yaweyuha\n",
      "579 ycn Yucuna\n",
      "580 yka Yakan\n",
      "581 yml Iamalele\n",
      "582 yre Yaouré\n",
      "583 yuj Karkar-Yuri\n",
      "584 yut Yopno\n",
      "585 yuw Yau (Morobe Province)\n",
      "586 yva Yawa\n",
      "587 zaa Sierra de Juárez Zapotec\n",
      "588 zab San Juan Guelavía Zapotec\n",
      "589 zac Ocotlán Zapotec\n",
      "590 zad Cajonos Zapotec\n",
      "591 zai Isthmus Zapotec\n",
      "592 zaj Zaramo\n",
      "593 zam Miahuatlán Zapotec\n",
      "594 zao Ozolotepec Zapotec\n",
      "595 zar Rincón Zapotec\n",
      "596 zas Santo Domingo Albarradas Zapotec\n",
      "597 zat Tabaa Zapotec\n",
      "598 zav Yatzachi Zapotec\n",
      "599 zaw Mitla Zapotec\n",
      "600 zca Coatecas Altas Zapotec\n",
      "601 zia Zia\n",
      "602 ziw Zigula\n",
      "603 zos Francisco León Zoque\n",
      "604 zpc Choapan Zapotec\n",
      "605 zpl Lachixío Zapotec\n",
      "606 zpo Amatlán Zapotec\n",
      "607 zpq Zoogocho Zapotec\n",
      "608 zpu Yalálag Zapotec\n",
      "609 zpv Chichicapan Zapotec\n",
      "610 zpz Texmelucan Zapotec\n",
      "611 zsr Southern Rincon Zapotec\n",
      "612 ztq Quioquitani-Quierí Zapotec\n",
      "613 zty Yatee Zapotec\n",
      "614 zyp Zyphe Chin\n"
     ]
    }
   ],
   "source": [
    "iso_df = pd.read_csv('iso-639-3_Name_Index.tab', sep='\\t')\n",
    "for i, code in enumerate(bible):\n",
    "    print(i, code, iso_df.loc[iso_df['Id'] == code, 'Print_Name'].values[0] if code in iso_df['Id'].tolist() else code)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [],
   "source": [
    "ind_langs = ['jav', 'ind', 'sun', 'mad', 'bew', 'zlm', 'min', 'bug', 'bjn', 'ace', 'ban', 'mui', 'sas', 'bbc', 'xmm', 'mak', 'pse', 'btd', 'bts', 'btm', 'jax', 'mqy', 'nij', 'ljp', 'inl', 'nia', 'nan', 'akb', 'max', 'aoz', 'hak', 'btx', 'sda', 'xdy', 'gor', 'bhp', 'pmy', 'mdr', 'kge', 'cmn', 'tet', 'rej', 'mfb', 'knx', 'gay', 'osi', 'smw', 'rob', 'mnb', 'kvr', 'xbr', 'lbw', 'bdl', 'lew', 'vkt', 'abs', 'mkn', 'btz', 'yue', 'dnw', 'slp', 'abl', 'ski', 'kjc', 'mhy', 'liw', 'bhq', 'mvp', 'khc', 'mog', 'end', 'hvn', 'kkv', 'sxn', 'ljl', 'cia', 'sly', 'bkr', 'ekg', 'lbx', 'sdq', 'adr', 'ptt', 'blf', 'mqj', 'bgz', 'kei', 'mqg', 'tes', 'gbi', 'otd', 'pmf', 'aaz', 'bhw', 'kjk', 'wlo', 'mqx', 'kzf', 'nxg', 'sya', 'bvu', 'mwv', 'wew', 'byd', 'tld', 'loe', 'dnt', 'frd', 'nxe', 'tjg', 'law', 'mhs', 'rir', 'scg', 'ptu', 'tft', 'vkk', 'xxk', 'mtd', 'djo', 'sbx', 'ges', 'unz', 'eng', 'vkl', 'knl', 'ulm', 'wmm', 'smr', 'apg', 'blj', 'ksx', 'lcf', 'pel', 'set', 'tmn', 'twu', 'atq', 'tlb', 'wow', 'itd', 'mqn', 'tvo', 'aol', 'lmy', 'mhp', 'jmd', 'pnc', 'lnd', 'bkz', 'bfn', 'tnw', 'kod', 'mky', 'skh', 'bac', 'dni', 'dna', 'dnk', 'dun', 'pea', 'kje', 'llg', 'ayz', 'lrt', 'bwp', 'mnz', 'szn', 'twy', 'txq', 'wlw', 'txm', 'blz', 'bhv', 'tom', 'tlu', 'ppk', 'hrk', 'kli', 'lex', 'hji', 'alp', 'tlt', 'abz', 'akg', 'had', 'htu', 'nlc', 'mxd', 'bdb', 'dup', 'iba', 'ila', 'loa', 'tby', 'yli', 'tnt', 'mej', 'uhn', 'heg', 'mzq', 'xmz', 'riu', 'alo', 'lra', 'xkl', 'mqs', 'rgu', 'szw', 'mnx', 'tsg', 'bna', 'lcl', 'bve', 'beu', 'xem', 'txe', 'ptn', 'nlk', 'spr', 'hik', 'amk', 'bnu', 'lev', 'dok', 'emb', 'kyt', 'kem', 'kvb', 'lur', 'mvd', 'aax', 'ndx', 'szb', 'ple', 'ssq', 'kps', 'wnk', 'jaq', 'yva', 'xte', 'myl', 'bhz', 'dms', 'tdn', 'pnp', 'aws', 'woo', 'asc', 'asl', 'bth', 'txt', 'kgq', 'whk', 'kkx', 'kpq', 'lmj', 'mtj', 'kti', 'slu', 'txn', 'lti', 'swu', 'awu', 'ebc', 'lje', 'saj', 'kvv', 'mqc', 'cns', 'bpz', 'row', 'lmf', 'mrz', 'akc', 'wha', 'iwo', 'kzp', 'mqa', 'psa', 'lcq', 'npy', 'tre', 'tdj', 'lwt', 'woi', 'kuk', 'put', 'rjg', 'sjb', 'wrp', 'weo', 'ues', 'bld', 'amv', 'kvo', 'mtg', 'ihp', 'jka', 'nfa', 'duw', 'kgw', 'kyo', 'tpg', 'nea', 'reb', 'skx', 'wul', 'wad', 'wod', 'yac', 'sau', 'and', 'mxn', 'tlv', 'bty', 'duq', 'vbb', 'baj', 'nbq', 'bqr', 'bep', 'bei', 'sre', 'irh', 'tyn', 'lmr', 'lmq', 'lvu', 'lwe', 'slz', 'kts', 'ror', 'twe', 'wah', 'klz', 'lhh', 'awy', 'tnm', 'xod', 'kvw', 'bpq', 'bay', 'klw', 'bvt', 'khe', 'pku', 'saw', 'tcg', 'kqv', 'pgu', 'bls', 'zrs', 'kzz', 'bzn', 'kuv', 'sbr', 'pdo', 'mli', 'kgr', 'adn', 'ahh', 'bnd', 'hap', 'bfg', 'kig', 'ste', 'eip', 'nsy', 'swt', 'ulu', 'wrx', 'wli', 'wms', 'gzn', 'bpv', 'sws', 'cml', 'bne', 'dmr', 'gei', 'pni', 'spb', 'tuj', 'sdu', 'bzq', 'brp', 'grs', 'kmt', 'kwe', 'nps', 'sko', 'bzl', 'kgx', 'awv', 'kkl', 'zka', 'ttp', 'kjr', 'ltu', 'bgb', 'bpo', 'asy', 'enr', 'gef', 'xkn', 'kwt', 'lau', 'mqo', 'mqf', 'mvv', 'nir', 'pmo', 'puj', 'sge', 'tty', 'kvd', 'lcs', 'ums', 'srl', 'wbw', 'kvh', 'mvr', 'rmm', 'jal', 'nxx', 'ury', 'irx', 'nec', 'yir', 'bvz', 'dbf', 'eno', 'gak', 'tmu', 'xkd', 'bzp', 'vko', 'mqp', 'nxl', 'xky', 'wbb', 'wlh', 'fau', 'ilu', 'rth', 'xay', 'dmy', 'jei', 'ddw', 'xmt', 'oia', 'bnq', 'bkl', 'kdw', 'msf', 'nqm', 'sbg', 'seu', 'tzn', 'wng', 'llm', 'dkk', 'bdw', 'ran', 'rnn', 'szp', 'tev', 'tvm', 'udj', 'xks', 'air', 'wgo', 'jbj', 'nks', 'aqm', 'bcd', 'asi', 'dem', 'goq', 'hov', 'kpu', 'bnf', 'msg', 'nxr', 'rhg', 'etz', 'xse', 'sob', 'wno', 'yet', 'xkq', 'mfp', 'duv', 'hmu', 'ktt', 'ley', 'lcd', 'kpd', 'zbt', 'mss', 'mgk', 'snv', 'dij', 'ret', 'drn', 'mth', 'twg', 'bpg', 'bsu', 'kvz', 'psn', 'bsm', 'kzm', 'mhz', 'nkj', 'pru', 'skv', 'gal', 'bup', 'txs', 'tvw', 'kzi', 'slg', 'tpf', 'vto', 'kyd', 'bfe', 'uka', 'kgb', 'kwh', 'ppm', 'wsa', 'bkn', 'imr', 'ymn', 'wkd', 'ert', 'lpe', 'vme', 'mxz', 'kzb', 'whu', 'xke', 'sbt', 'knd', 'nbn', 'kuc', 'njs', 'nni', 'oni', 'orz', 'aos', 'tcm', 'tad', 'trt', 'wrs', 'ner', 'bpp', 'skz', 'dbe', 'toy', 'lce', 'bvk', 'dei', 'kax', 'xau', 'opk', 'jet', 'pas', 'tmj', 'urn', 'jel', 'kdy', 'pud', 'pee', 'auu', 'auw', 'bgy', 'flh', 'kzd', 'raz', 'wru', 'jau', 'gop', 'bzb', 'bhc', 'kvp', 'sve', 'auq', 'tln', 'tlk', 'bsa', 'bqb', 'byl', 'tbp', 'kbv', 'mrf', 'hud', 'kzv', 'xwr', 'kja', 'swr', 'tip', 'bgv', 'wuy', 'tml', 'lji', 'rmh', 'pdn', 'mqi', 'wet', 'bqq', 'bzu', 'daz', 'emw', 'kiy', 'kiq', 'lcc', 'mvx', 'mso', 'sao', 'tlg', 'snu', 'wtw', 'kgv', 'kbi', 'msl', 'wfg', 'tcq', 'lrn', 'dmu', 'sow', 'bnv', 'erw', 'jbr', 'khp', 'khh', 'mmb', 'puc', 'rac', 'wai', 'yrs', 'yki', 'bed', 'bdx', 'kxq', 'lix', 'apx', 'agf', 'wbe', 'puf', 'bqy', 'mgf', 'afz', 'ttn', 'ulf', 'awh', 'bti', 'diy', 'kcd', 'krz', 'kpi', 'kwr', 'srt', 'tkx', 'tfo', 'tti', 'tdi ', 'mnu', 'itx', 'awr', 'tds', 'ire', 'brs', 'mrx', 'amq', 'kzu', 'llq', 'mok', 'plh', 'sgu', 'aip', 'ibu', 'dbn', 'moq', 'naa', 'mvs', 'kly', 'xkw', 'mqr', 'kkb', 'lio', 'lgi', 'ism', 'asz', 'btj', 'khd', 'wor', 'dsn', 'hti', 'huw', 'huk', 'ihb', 'jvd', 'kzx', 'kzl', 'lox', 'mpy', 'vms', 'nae', 'nil', 'nul', 'onx', 'pns', 'spi', 'srw', 'tni', 'tmg', 'tve', 'xmx', 'pey', 'cdo', 'sdo']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 blz Balantak\n",
      "1 nbq Nggem\n",
      "2 alp Alune\n",
      "3 ptu Bambam\n",
      "4 yva Yawa\n",
      "5 ind Indonesian\n",
      "6 nfa Dhao\n",
      "7 heg Helong\n",
      "8 cmn Mandarin Chinese\n",
      "9 mkn Kupang Malay\n",
      "10 mqj Mamasa\n",
      "11 lex Luang\n",
      "12 amk Ambai\n",
      "13 hvn Sabu\n",
      "14 aaz Amarasi\n",
      "15 kje Kisar\n",
      "16 eng English\n"
     ]
    }
   ],
   "source": [
    "for i, code in enumerate(set(ind_langs).intersection(bible)):\n",
    "    print(i, code, iso_df.loc[iso_df['Id'] == code, 'Print_Name'].values[0] if code in iso_df['Id'].tolist() else code)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "### Summary\n",
    "- mC4 -> Indonesian, Sundanese, Javanese\n",
    "- CC -> Indonesian, Sundanese, Javanese\n",
    "- OSCAR -> Indonesian, Sundanese, Javanese, Minangkabau\n",
    "- Bible -> \n",
    "    - blz Balantak (33,000)\n",
    "    - nbq Nggem (4,400)\n",
    "    - alp Alune (21,300)\n",
    "    - ptu Bambam (40,000)\n",
    "    - yva Yawa (10,000)\n",
    "    - nfa Dhao (5,000)\n",
    "    - heg Helong (14,000)\n",
    "    - mkn Kupang Malay (200,000)\n",
    "    - mqj Mamasa (100,000)\n",
    "    - lex Luang (18,000)\n",
    "    - amk Ambai (10,000)\n",
    "    - hvn Sabu (8,000)\n",
    "    - aaz Amarasi (70,000)\n",
    "    - kje Kisar (20,000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "--2023-05-27 14:43:31--  https://www.loc.gov/standards/iso639-2/php/code_list.php\n",
      "Resolving www.loc.gov (www.loc.gov)... 104.16.54.16, 104.16.55.16, 2606:4700::6810:3610, ...\n",
      "Connecting to www.loc.gov (www.loc.gov)|104.16.54.16|:443... connected.\n",
      "HTTP request sent, awaiting response... 200 OK\n",
      "Length: unspecified [text/html]\n",
      "Saving to: ‘code_list.php’\n",
      "\n",
      "code_list.php           [ <=>                ]  78.36K  --.-KB/s    in 0.003s  \n",
      "\n",
      "2023-05-27 14:43:31 (27.8 MB/s) - ‘code_list.php’ saved [80236]\n",
      "\n"
     ]
    }
   ],
   "source": [
    "!wget https://www.loc.gov/standards/iso639-2/php/code_list.php"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {},
   "outputs": [],
   "source": [
    "iso2_df = pd.read_html('code_list.php')[1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ISO 639-2 Code</th>\n",
       "      <th>ISO 639-1 Code</th>\n",
       "      <th>English name of Language</th>\n",
       "      <th>French name of Language</th>\n",
       "      <th>German name of Language</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>aar</td>\n",
       "      <td>aa</td>\n",
       "      <td>Afar</td>\n",
       "      <td>afar</td>\n",
       "      <td>Danakil-Sprache</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>abk</td>\n",
       "      <td>ab</td>\n",
       "      <td>Abkhazian</td>\n",
       "      <td>abkhaze</td>\n",
       "      <td>Abchasisch</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>ace</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Achinese</td>\n",
       "      <td>aceh</td>\n",
       "      <td>Aceh-Sprache</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>ach</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Acoli</td>\n",
       "      <td>acoli</td>\n",
       "      <td>Acholi-Sprache</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>ada</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Adangme</td>\n",
       "      <td>adangme</td>\n",
       "      <td>Adangme-Sprache</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>502</th>\n",
       "      <td>znd</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Zande languages</td>\n",
       "      <td>zandé, langues</td>\n",
       "      <td>Zande-Sprachen</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>503</th>\n",
       "      <td>zul</td>\n",
       "      <td>zu</td>\n",
       "      <td>Zulu</td>\n",
       "      <td>zoulou</td>\n",
       "      <td>Zulu-Sprache</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>504</th>\n",
       "      <td>zun</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Zuni</td>\n",
       "      <td>zuni</td>\n",
       "      <td>Zuñi-Sprache</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>505</th>\n",
       "      <td>zxx</td>\n",
       "      <td>NaN</td>\n",
       "      <td>No linguistic content; Not applicable</td>\n",
       "      <td>pas de contenu linguistique; non applicable</td>\n",
       "      <td>Kein linguistischer Inhalt</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>506</th>\n",
       "      <td>zza</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki</td>\n",
       "      <td>zaza; dimili; dimli; kirdki; kirmanjki; zazaki</td>\n",
       "      <td>Zazaki</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>507 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    ISO 639-2 Code ISO 639-1 Code  \\\n",
       "0              aar             aa   \n",
       "1              abk             ab   \n",
       "2              ace            NaN   \n",
       "3              ach            NaN   \n",
       "4              ada            NaN   \n",
       "..             ...            ...   \n",
       "502            znd            NaN   \n",
       "503            zul             zu   \n",
       "504            zun            NaN   \n",
       "505            zxx            NaN   \n",
       "506            zza            NaN   \n",
       "\n",
       "                           English name of Language  \\\n",
       "0                                              Afar   \n",
       "1                                         Abkhazian   \n",
       "2                                          Achinese   \n",
       "3                                             Acoli   \n",
       "4                                           Adangme   \n",
       "..                                              ...   \n",
       "502                                 Zande languages   \n",
       "503                                            Zulu   \n",
       "504                                            Zuni   \n",
       "505           No linguistic content; Not applicable   \n",
       "506  Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki   \n",
       "\n",
       "                            French name of Language  \\\n",
       "0                                              afar   \n",
       "1                                           abkhaze   \n",
       "2                                              aceh   \n",
       "3                                             acoli   \n",
       "4                                           adangme   \n",
       "..                                              ...   \n",
       "502                                  zandé, langues   \n",
       "503                                          zoulou   \n",
       "504                                            zuni   \n",
       "505     pas de contenu linguistique; non applicable   \n",
       "506  zaza; dimili; dimli; kirdki; kirmanjki; zazaki   \n",
       "\n",
       "        German name of Language  \n",
       "0               Danakil-Sprache  \n",
       "1                    Abchasisch  \n",
       "2                  Aceh-Sprache  \n",
       "3                Acholi-Sprache  \n",
       "4               Adangme-Sprache  \n",
       "..                          ...  \n",
       "502              Zande-Sprachen  \n",
       "503                Zulu-Sprache  \n",
       "504                Zuñi-Sprache  \n",
       "505  Kein linguistischer Inhalt  \n",
       "506                      Zazaki  \n",
       "\n",
       "[507 rows x 5 columns]"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iso2_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 182,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Id</th>\n",
       "      <th>Print_Name</th>\n",
       "      <th>Inverted_Name</th>\n",
       "      <th>639-1</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>6605</th>\n",
       "      <td>tel</td>\n",
       "      <td>Telugu</td>\n",
       "      <td>Telugu</td>\n",
       "      <td>te</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Id Print_Name Inverted_Name 639-1\n",
       "6605  tel     Telugu        Telugu    te"
      ]
     },
     "execution_count": 182,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iso_df[iso_df['Id'] == 'tel']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "iso_df = pd.read_csv('iso-639-3_Name_Index.tab', sep='\\t')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_639_1(iso639_3):\n",
    "    if iso639_3 in iso2_df['ISO 639-2 Code'].tolist():\n",
    "        return iso2_df.loc[iso2_df['ISO 639-2 Code'] == iso639_3, 'ISO 639-1 Code'].values[0]\n",
    "    elif iso639_3 in meta_df['639-3'].tolist():\n",
    "        return meta_df.loc[meta_df['639-3'] == iso639_3, '639-1'].values[0]\n",
    "    else:\n",
    "        np.nan\n",
    "iso_df['639-1'] = iso_df['Id'].apply(get_639_1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Id</th>\n",
       "      <th>Print_Name</th>\n",
       "      <th>Inverted_Name</th>\n",
       "      <th>639-1</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>aar</td>\n",
       "      <td>Afar</td>\n",
       "      <td>Afar</td>\n",
       "      <td>aa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>abk</td>\n",
       "      <td>Abkhazian</td>\n",
       "      <td>Abkhazian</td>\n",
       "      <td>ab</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>121</th>\n",
       "      <td>afr</td>\n",
       "      <td>Afrikaans</td>\n",
       "      <td>Afrikaans</td>\n",
       "      <td>af</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>195</th>\n",
       "      <td>aka</td>\n",
       "      <td>Akan</td>\n",
       "      <td>Akan</td>\n",
       "      <td>ak</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>250</th>\n",
       "      <td>amh</td>\n",
       "      <td>Amharic</td>\n",
       "      <td>Amharic</td>\n",
       "      <td>am</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8005</th>\n",
       "      <td>yor</td>\n",
       "      <td>Yoruba</td>\n",
       "      <td>Yoruba</td>\n",
       "      <td>yo</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8141</th>\n",
       "      <td>zha</td>\n",
       "      <td>Chuang</td>\n",
       "      <td>Chuang</td>\n",
       "      <td>za</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8142</th>\n",
       "      <td>zha</td>\n",
       "      <td>Zhuang</td>\n",
       "      <td>Zhuang</td>\n",
       "      <td>za</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8147</th>\n",
       "      <td>zho</td>\n",
       "      <td>Chinese</td>\n",
       "      <td>Chinese</td>\n",
       "      <td>zh</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8267</th>\n",
       "      <td>zul</td>\n",
       "      <td>Zulu</td>\n",
       "      <td>Zulu</td>\n",
       "      <td>zu</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>215 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       Id Print_Name Inverted_Name 639-1\n",
       "15    aar       Afar          Afar    aa\n",
       "32    abk  Abkhazian     Abkhazian    ab\n",
       "121   afr  Afrikaans     Afrikaans    af\n",
       "195   aka       Akan          Akan    ak\n",
       "250   amh    Amharic       Amharic    am\n",
       "...   ...        ...           ...   ...\n",
       "8005  yor     Yoruba        Yoruba    yo\n",
       "8141  zha     Chuang        Chuang    za\n",
       "8142  zha     Zhuang        Zhuang    za\n",
       "8147  zho    Chinese       Chinese    zh\n",
       "8267  zul       Zulu          Zulu    zu\n",
       "\n",
       "[215 rows x 4 columns]"
      ]
     },
     "execution_count": 177,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iso_df.loc[~iso_df['639-1'].isna()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Id</th>\n",
       "      <th>Print_Name</th>\n",
       "      <th>Inverted_Name</th>\n",
       "      <th>639-1</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>aaa</td>\n",
       "      <td>Ghotuo</td>\n",
       "      <td>Ghotuo</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>aab</td>\n",
       "      <td>Alumu-Tesu</td>\n",
       "      <td>Alumu-Tesu</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>aac</td>\n",
       "      <td>Ari</td>\n",
       "      <td>Ari</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>aad</td>\n",
       "      <td>Amal</td>\n",
       "      <td>Amal</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>aae</td>\n",
       "      <td>Arbëreshë Albanian</td>\n",
       "      <td>Albanian, Arbëreshë</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8281</th>\n",
       "      <td>zza</td>\n",
       "      <td>Kirdki</td>\n",
       "      <td>Kirdki</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8282</th>\n",
       "      <td>zza</td>\n",
       "      <td>Kirmanjki (macrolanguage)</td>\n",
       "      <td>Kirmanjki (macrolanguage)</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8283</th>\n",
       "      <td>zza</td>\n",
       "      <td>Zaza</td>\n",
       "      <td>Zaza</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8284</th>\n",
       "      <td>zza</td>\n",
       "      <td>Zazaki</td>\n",
       "      <td>Zazaki</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8285</th>\n",
       "      <td>zzj</td>\n",
       "      <td>Zuojiang Zhuang</td>\n",
       "      <td>Zhuang, Zuojiang</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8286 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "       Id                 Print_Name              Inverted_Name  639-1\n",
       "0     aaa                     Ghotuo                     Ghotuo    NaN\n",
       "1     aab                 Alumu-Tesu                 Alumu-Tesu    NaN\n",
       "2     aac                        Ari                        Ari    NaN\n",
       "3     aad                       Amal                       Amal    NaN\n",
       "4     aae         Arbëreshë Albanian        Albanian, Arbëreshë    NaN\n",
       "...   ...                        ...                        ...    ...\n",
       "8281  zza                     Kirdki                     Kirdki    NaN\n",
       "8282  zza  Kirmanjki (macrolanguage)  Kirmanjki (macrolanguage)    NaN\n",
       "8283  zza                       Zaza                       Zaza    NaN\n",
       "8284  zza                     Zazaki                     Zazaki    NaN\n",
       "8285  zzj            Zuojiang Zhuang           Zhuang, Zuojiang    NaN\n",
       "\n",
       "[8286 rows x 4 columns]"
      ]
     },
     "execution_count": 148,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "meta_df.loc[(meta_df['639-3'] != meta_df['639-2'])]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ISO 639-2 Code</th>\n",
       "      <th>ISO 639-1 Code</th>\n",
       "      <th>English name of Language</th>\n",
       "      <th>French name of Language</th>\n",
       "      <th>German name of Language</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>afa</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Afro-Asiatic languages</td>\n",
       "      <td>afro-asiatiques, langues</td>\n",
       "      <td>Hamitosemitische Sprachen (Andere)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>alb (B)sqi (T)</td>\n",
       "      <td>sq</td>\n",
       "      <td>Albanian</td>\n",
       "      <td>albanais</td>\n",
       "      <td>Albanisch</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>alg</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Algonquian languages</td>\n",
       "      <td>algonquines, langues</td>\n",
       "      <td>Algonkin-Sprachen (Andere)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>apa</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Apache languages</td>\n",
       "      <td>apaches, langues</td>\n",
       "      <td>Apachen-Sprachen</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>arm (B)hye (T)</td>\n",
       "      <td>hy</td>\n",
       "      <td>Armenian</td>\n",
       "      <td>arménien</td>\n",
       "      <td>Armenisch</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>485</th>\n",
       "      <td>wel (B)cym (T)</td>\n",
       "      <td>cy</td>\n",
       "      <td>Welsh</td>\n",
       "      <td>gallois</td>\n",
       "      <td>Kymrisch</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>486</th>\n",
       "      <td>wen</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Sorbian languages</td>\n",
       "      <td>sorabes, langues</td>\n",
       "      <td>Sorbisch (Andere)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>495</th>\n",
       "      <td>ypk</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Yupik languages</td>\n",
       "      <td>yupik, langues</td>\n",
       "      <td>Ypik-Sprachen</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>501</th>\n",
       "      <td>chi (B)zho (T)</td>\n",
       "      <td>zh</td>\n",
       "      <td>Chinese</td>\n",
       "      <td>chinois</td>\n",
       "      <td>Chinesisch</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>502</th>\n",
       "      <td>znd</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Zande languages</td>\n",
       "      <td>zandé, langues</td>\n",
       "      <td>Zande-Sprachen</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>107 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     ISO 639-2 Code ISO 639-1 Code English name of Language  \\\n",
       "6               afa            NaN   Afro-Asiatic languages   \n",
       "12   alb (B)sqi (T)             sq                 Albanian   \n",
       "14              alg            NaN     Algonquian languages   \n",
       "19              apa            NaN         Apache languages   \n",
       "23   arm (B)hye (T)             hy                 Armenian   \n",
       "..              ...            ...                      ...   \n",
       "485  wel (B)cym (T)             cy                    Welsh   \n",
       "486             wen            NaN        Sorbian languages   \n",
       "495             ypk            NaN          Yupik languages   \n",
       "501  chi (B)zho (T)             zh                  Chinese   \n",
       "502             znd            NaN          Zande languages   \n",
       "\n",
       "      French name of Language             German name of Language  \n",
       "6    afro-asiatiques, langues  Hamitosemitische Sprachen (Andere)  \n",
       "12                   albanais                           Albanisch  \n",
       "14       algonquines, langues          Algonkin-Sprachen (Andere)  \n",
       "19           apaches, langues                    Apachen-Sprachen  \n",
       "23                   arménien                           Armenisch  \n",
       "..                        ...                                 ...  \n",
       "485                   gallois                            Kymrisch  \n",
       "486          sorabes, langues                   Sorbisch (Andere)  \n",
       "495            yupik, langues                       Ypik-Sprachen  \n",
       "501                   chinois                          Chinesisch  \n",
       "502            zandé, langues                      Zande-Sprachen  \n",
       "\n",
       "[107 rows x 5 columns]"
      ]
     },
     "execution_count": 127,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iso2_df.loc[~iso2_df['ISO 639-2 Code'].isin(iso_df['Id'])]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Id</th>\n",
       "      <th>Print_Name</th>\n",
       "      <th>Inverted_Name</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>8281</th>\n",
       "      <td>zza</td>\n",
       "      <td>Kirdki</td>\n",
       "      <td>Kirdki</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8282</th>\n",
       "      <td>zza</td>\n",
       "      <td>Kirmanjki (macrolanguage)</td>\n",
       "      <td>Kirmanjki (macrolanguage)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8283</th>\n",
       "      <td>zza</td>\n",
       "      <td>Zaza</td>\n",
       "      <td>Zaza</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8284</th>\n",
       "      <td>zza</td>\n",
       "      <td>Zazaki</td>\n",
       "      <td>Zazaki</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8285</th>\n",
       "      <td>zzj</td>\n",
       "      <td>Zuojiang Zhuang</td>\n",
       "      <td>Zhuang, Zuojiang</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Id                 Print_Name              Inverted_Name\n",
       "8281  zza                     Kirdki                     Kirdki\n",
       "8282  zza  Kirmanjki (macrolanguage)  Kirmanjki (macrolanguage)\n",
       "8283  zza                       Zaza                       Zaza\n",
       "8284  zza                     Zazaki                     Zazaki\n",
       "8285  zzj            Zuojiang Zhuang           Zhuang, Zuojiang"
      ]
     },
     "execution_count": 130,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iso_df.tail()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "iso_df['']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "meta_df.loc[pd.isna(meta_df['639-3']), '639-3'] = meta_df.loc[pd.isna(meta_df['639-3']), '639-2']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>639-2</th>\n",
       "      <th>639-3</th>\n",
       "      <th>639-5</th>\n",
       "      <th>639-1</th>\n",
       "      <th>lang_name</th>\n",
       "      <th>scope</th>\n",
       "      <th>type</th>\n",
       "      <th>native_name</th>\n",
       "      <th>other_name</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>afa</td>\n",
       "      <td>bad</td>\n",
       "      <td>afa</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Afro-Asiatic languages</td>\n",
       "      <td>Collective</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>alg</td>\n",
       "      <td>cai</td>\n",
       "      <td>alg</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Algonquian languages</td>\n",
       "      <td>Collective</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>apa</td>\n",
       "      <td>cpf</td>\n",
       "      <td>apa</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Apache languages</td>\n",
       "      <td>Collective</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Southern Athabaskan languages</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>art</td>\n",
       "      <td>fiu</td>\n",
       "      <td>art</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Artificial languages</td>\n",
       "      <td>Collective</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>ath</td>\n",
       "      <td>inc</td>\n",
       "      <td>ath</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Athapascan languages</td>\n",
       "      <td>Collective</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Athabaskan languages</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>aus</td>\n",
       "      <td>ine</td>\n",
       "      <td>aus</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Australian languages</td>\n",
       "      <td>Collective</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>bad</td>\n",
       "      <td>map</td>\n",
       "      <td>bad</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Banda languages</td>\n",
       "      <td>Collective</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>bai</td>\n",
       "      <td>mkh</td>\n",
       "      <td>bai</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Bamileke languages</td>\n",
       "      <td>Collective</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Bamiléké</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>bat</td>\n",
       "      <td>nic</td>\n",
       "      <td>bat</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Baltic languages</td>\n",
       "      <td>Collective</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>ber</td>\n",
       "      <td>pra</td>\n",
       "      <td>ber</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Berber languages</td>\n",
       "      <td>Collective</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Tamaziɣt; Tamazight; ⵜⴰⵎⴰⵣⵉⵖⵜ; ⵝⴰⵎⴰⵣⵉⵗⵝ; ⵜⴰⵎⴰⵣⵉⵗⵜ</td>\n",
       "      <td>Amazigh languages</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>bih</td>\n",
       "      <td>sai</td>\n",
       "      <td>bih</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Bihari languages</td>\n",
       "      <td>Collective</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>54</th>\n",
       "      <td>bnt</td>\n",
       "      <td>sit</td>\n",
       "      <td>bnt</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Bantu languages</td>\n",
       "      <td>Collective</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>55</th>\n",
       "      <td>bod / tib*</td>\n",
       "      <td>bod</td>\n",
       "      <td>NaN</td>\n",
       "      <td>bo</td>\n",
       "      <td>Tibetan</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>བོད་སྐད་ Bodskad; ལྷ་སའི་སྐད་ Lhas'iskad</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>59</th>\n",
       "      <td>btk</td>\n",
       "      <td>tai</td>\n",
       "      <td>btk</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Batak languages</td>\n",
       "      <td>Collective</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>65</th>\n",
       "      <td>cai</td>\n",
       "      <td>znd</td>\n",
       "      <td>cai</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Central American Indian languages</td>\n",
       "      <td>Collective</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>71</th>\n",
       "      <td>ces / cze*</td>\n",
       "      <td>ces</td>\n",
       "      <td>NaN</td>\n",
       "      <td>cs</td>\n",
       "      <td>Czech</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>čeština; český jazyk</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>98</th>\n",
       "      <td>cym / wel*</td>\n",
       "      <td>cym</td>\n",
       "      <td>NaN</td>\n",
       "      <td>cy</td>\n",
       "      <td>Welsh</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>Cymraeg; y Gymraeg</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>105</th>\n",
       "      <td>deu / ger*</td>\n",
       "      <td>deu</td>\n",
       "      <td>NaN</td>\n",
       "      <td>de</td>\n",
       "      <td>German</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>Deutsch</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>119</th>\n",
       "      <td>ell / gre*</td>\n",
       "      <td>ell</td>\n",
       "      <td>NaN</td>\n",
       "      <td>el</td>\n",
       "      <td>Greek, Modern (1453–)</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>Νέα Ελληνικά Néa Ellêniká</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>125</th>\n",
       "      <td>eus / baq*</td>\n",
       "      <td>eus</td>\n",
       "      <td>NaN</td>\n",
       "      <td>eu</td>\n",
       "      <td>Basque</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>euskara</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>130</th>\n",
       "      <td>fas / per*</td>\n",
       "      <td>fas</td>\n",
       "      <td>NaN</td>\n",
       "      <td>fa</td>\n",
       "      <td>Persian</td>\n",
       "      <td>Macrolanguage</td>\n",
       "      <td>Living</td>\n",
       "      <td>فارسی Fārsiy</td>\n",
       "      <td>Farsi</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>137</th>\n",
       "      <td>fra / fre*</td>\n",
       "      <td>fra</td>\n",
       "      <td>NaN</td>\n",
       "      <td>fr</td>\n",
       "      <td>French</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>français</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>182</th>\n",
       "      <td>hye / arm*</td>\n",
       "      <td>hye</td>\n",
       "      <td>NaN</td>\n",
       "      <td>hy</td>\n",
       "      <td>Armenian</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>Հայերէն Hayerèn; Հայերեն Hayeren</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>199</th>\n",
       "      <td>isl / ice*</td>\n",
       "      <td>isl</td>\n",
       "      <td>NaN</td>\n",
       "      <td>is</td>\n",
       "      <td>Icelandic</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>íslenska</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>214</th>\n",
       "      <td>kat / geo*</td>\n",
       "      <td>kat</td>\n",
       "      <td>NaN</td>\n",
       "      <td>ka</td>\n",
       "      <td>Georgian</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>ქართული Kharthuli</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>278</th>\n",
       "      <td>mkd / mac*</td>\n",
       "      <td>mkd</td>\n",
       "      <td>NaN</td>\n",
       "      <td>mk</td>\n",
       "      <td>Macedonian</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>македонски јазик makedonski jazik</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>288</th>\n",
       "      <td>mri / mao*</td>\n",
       "      <td>mri</td>\n",
       "      <td>NaN</td>\n",
       "      <td>mi</td>\n",
       "      <td>Māori</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>Te Reo Māori</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>289</th>\n",
       "      <td>msa / may*</td>\n",
       "      <td>msa</td>\n",
       "      <td>NaN</td>\n",
       "      <td>ms</td>\n",
       "      <td>Malay</td>\n",
       "      <td>Macrolanguage</td>\n",
       "      <td>Living</td>\n",
       "      <td>Bahasa Melayu</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>295</th>\n",
       "      <td>mya / bur*</td>\n",
       "      <td>mya</td>\n",
       "      <td>NaN</td>\n",
       "      <td>my</td>\n",
       "      <td>Burmese</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>မြန်မာစာ Mrãmācā; မြန်မာစကား Mrãmākā:</td>\n",
       "      <td>Myanmar</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>312</th>\n",
       "      <td>nld / dut*</td>\n",
       "      <td>nld</td>\n",
       "      <td>NaN</td>\n",
       "      <td>nl</td>\n",
       "      <td>Dutch; Flemish</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>Nederlands; Vlaams</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>360</th>\n",
       "      <td>ron / rum*</td>\n",
       "      <td>ron</td>\n",
       "      <td>NaN</td>\n",
       "      <td>ro</td>\n",
       "      <td>Romanian; Moldavian; Moldovan</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>limba română</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>385</th>\n",
       "      <td>slk / slo*</td>\n",
       "      <td>slk</td>\n",
       "      <td>NaN</td>\n",
       "      <td>sk</td>\n",
       "      <td>Slovak</td>\n",
       "      <td>Individual</td>\n",
       "      <td>Living</td>\n",
       "      <td>slovenčina; slovenský jazyk</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>402</th>\n",
       "      <td>sqi / alb*</td>\n",
       "      <td>sqi</td>\n",
       "      <td>NaN</td>\n",
       "      <td>sq</td>\n",
       "      <td>Albanian</td>\n",
       "      <td>Macrolanguage</td>\n",
       "      <td>Living</td>\n",
       "      <td>Shqip</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>481</th>\n",
       "      <td>zho / chi*</td>\n",
       "      <td>zho</td>\n",
       "      <td>NaN</td>\n",
       "      <td>zh</td>\n",
       "      <td>Chinese</td>\n",
       "      <td>Macrolanguage</td>\n",
       "      <td>Living</td>\n",
       "      <td>中文 Zhōngwén; 汉语; 漢語 Hànyǔ</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          639-2 639-3 639-5 639-1                          lang_name  \\\n",
       "6           afa   bad   afa   NaN             Afro-Asiatic languages   \n",
       "13          alg   cai   alg   NaN               Algonquian languages   \n",
       "18          apa   cpf   apa   NaN                   Apache languages   \n",
       "24          art   fiu   art   NaN               Artificial languages   \n",
       "28          ath   inc   ath   NaN               Athapascan languages   \n",
       "29          aus   ine   aus   NaN               Australian languages   \n",
       "35          bad   map   bad   NaN                    Banda languages   \n",
       "36          bai   mkh   bai   NaN                 Bamileke languages   \n",
       "42          bat   nic   bat   NaN                   Baltic languages   \n",
       "47          ber   pra   ber   NaN                   Berber languages   \n",
       "49          bih   sai   bih   NaN                   Bihari languages   \n",
       "54          bnt   sit   bnt   NaN                    Bantu languages   \n",
       "55   bod / tib*   bod   NaN    bo                            Tibetan   \n",
       "59          btk   tai   btk   NaN                    Batak languages   \n",
       "65          cai   znd   cai   NaN  Central American Indian languages   \n",
       "71   ces / cze*   ces   NaN    cs                              Czech   \n",
       "98   cym / wel*   cym   NaN    cy                              Welsh   \n",
       "105  deu / ger*   deu   NaN    de                             German   \n",
       "119  ell / gre*   ell   NaN    el              Greek, Modern (1453–)   \n",
       "125  eus / baq*   eus   NaN    eu                             Basque   \n",
       "130  fas / per*   fas   NaN    fa                            Persian   \n",
       "137  fra / fre*   fra   NaN    fr                             French   \n",
       "182  hye / arm*   hye   NaN    hy                           Armenian   \n",
       "199  isl / ice*   isl   NaN    is                          Icelandic   \n",
       "214  kat / geo*   kat   NaN    ka                           Georgian   \n",
       "278  mkd / mac*   mkd   NaN    mk                         Macedonian   \n",
       "288  mri / mao*   mri   NaN    mi                              Māori   \n",
       "289  msa / may*   msa   NaN    ms                              Malay   \n",
       "295  mya / bur*   mya   NaN    my                            Burmese   \n",
       "312  nld / dut*   nld   NaN    nl                     Dutch; Flemish   \n",
       "360  ron / rum*   ron   NaN    ro      Romanian; Moldavian; Moldovan   \n",
       "385  slk / slo*   slk   NaN    sk                             Slovak   \n",
       "402  sqi / alb*   sqi   NaN    sq                           Albanian   \n",
       "481  zho / chi*   zho   NaN    zh                            Chinese   \n",
       "\n",
       "             scope    type                                        native_name  \\\n",
       "6       Collective     NaN                                                NaN   \n",
       "13      Collective     NaN                                                NaN   \n",
       "18      Collective     NaN                                                NaN   \n",
       "24      Collective     NaN                                                NaN   \n",
       "28      Collective     NaN                                                NaN   \n",
       "29      Collective     NaN                                                NaN   \n",
       "35      Collective     NaN                                                NaN   \n",
       "36      Collective     NaN                                           Bamiléké   \n",
       "42      Collective     NaN                                                NaN   \n",
       "47      Collective     NaN  Tamaziɣt; Tamazight; ⵜⴰⵎⴰⵣⵉⵖⵜ; ⵝⴰⵎⴰⵣⵉⵗⵝ; ⵜⴰⵎⴰⵣⵉⵗⵜ   \n",
       "49      Collective     NaN                                                NaN   \n",
       "54      Collective     NaN                                                NaN   \n",
       "55      Individual  Living           བོད་སྐད་ Bodskad; ལྷ་སའི་སྐད་ Lhas'iskad   \n",
       "59      Collective     NaN                                                NaN   \n",
       "65      Collective     NaN                                                NaN   \n",
       "71      Individual  Living                               čeština; český jazyk   \n",
       "98      Individual  Living                                 Cymraeg; y Gymraeg   \n",
       "105     Individual  Living                                            Deutsch   \n",
       "119     Individual  Living                          Νέα Ελληνικά Néa Ellêniká   \n",
       "125     Individual  Living                                            euskara   \n",
       "130  Macrolanguage  Living                                       فارسی Fārsiy   \n",
       "137     Individual  Living                                           français   \n",
       "182     Individual  Living                   Հայերէն Hayerèn; Հայերեն Hayeren   \n",
       "199     Individual  Living                                           íslenska   \n",
       "214     Individual  Living                                  ქართული Kharthuli   \n",
       "278     Individual  Living                  македонски јазик makedonski jazik   \n",
       "288     Individual  Living                                       Te Reo Māori   \n",
       "289  Macrolanguage  Living                                      Bahasa Melayu   \n",
       "295     Individual  Living              မြန်မာစာ Mrãmācā; မြန်မာစကား Mrãmākā:   \n",
       "312     Individual  Living                                 Nederlands; Vlaams   \n",
       "360     Individual  Living                                       limba română   \n",
       "385     Individual  Living                        slovenčina; slovenský jazyk   \n",
       "402  Macrolanguage  Living                                              Shqip   \n",
       "481  Macrolanguage  Living                          中文 Zhōngwén; 汉语; 漢語 Hànyǔ   \n",
       "\n",
       "                        other_name  \n",
       "6                              NaN  \n",
       "13                             NaN  \n",
       "18   Southern Athabaskan languages  \n",
       "24                             NaN  \n",
       "28            Athabaskan languages  \n",
       "29                             NaN  \n",
       "35                             NaN  \n",
       "36                             NaN  \n",
       "42                             NaN  \n",
       "47               Amazigh languages  \n",
       "49                             NaN  \n",
       "54                             NaN  \n",
       "55                             NaN  \n",
       "59                             NaN  \n",
       "65                             NaN  \n",
       "71                             NaN  \n",
       "98                             NaN  \n",
       "105                            NaN  \n",
       "119                            NaN  \n",
       "125                            NaN  \n",
       "130                          Farsi  \n",
       "137                            NaN  \n",
       "182                            NaN  \n",
       "199                            NaN  \n",
       "214                            NaN  \n",
       "278                            NaN  \n",
       "288                            NaN  \n",
       "289                            NaN  \n",
       "295                        Myanmar  \n",
       "312                            NaN  \n",
       "360                            NaN  \n",
       "385                            NaN  \n",
       "402                            NaN  \n",
       "481                            NaN  "
      ]
     },
     "execution_count": 141,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "meta_df.loc[(meta_df['639-3'] != meta_df['639-2'])]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 200,
   "metadata": {},
   "outputs": [],
   "source": [
    "meta_df[['lang_name', '639-2', '639-3', '639-5', '639-1']].to_csv('wiki.csv', index=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Wikipedia"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 226,
   "metadata": {},
   "outputs": [],
   "source": [
    "wiki_dfs = pd.read_html('https://en.wikipedia.org/wiki/List_of_Wikipedias')\n",
    "ns_df, basic_df, detail_df = wiki_dfs[1], wiki_dfs[3], wiki_dfs[4]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 231,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th colspan=\"2\" halign=\"left\">Codes</th>\n",
       "      <th>WP edition</th>\n",
       "      <th>Language</th>\n",
       "      <th>Notes</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <th>WP code</th>\n",
       "      <th>ISO 639 code</th>\n",
       "      <th>WP edition</th>\n",
       "      <th>Language</th>\n",
       "      <th>Notes</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>als</td>\n",
       "      <td>gsw</td>\n",
       "      <td>Alemannic Wikipedia</td>\n",
       "      <td>Alemannic German</td>\n",
       "      <td>als is the ISO code for Tosk Albanian. The Ale...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>bat-smg</td>\n",
       "      <td>sgs</td>\n",
       "      <td>Samogitian Wikipedia</td>\n",
       "      <td>Samogitian</td>\n",
       "      <td>bat is the ISO code for the Baltic languages w...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>bh</td>\n",
       "      <td>bh, bih</td>\n",
       "      <td>Bhojpuri Wikipedia</td>\n",
       "      <td>Bihari (Bhojpuri)</td>\n",
       "      <td>bh and bih are the ISO codes for the Bihari ma...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>cbk-zam</td>\n",
       "      <td>none</td>\n",
       "      <td>Chavacano Wikipedia</td>\n",
       "      <td>Zamboanga Chavacano</td>\n",
       "      <td>cbk is the ISO code for Chavacano while zam is...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>fiu-vro</td>\n",
       "      <td>vro</td>\n",
       "      <td>Võro Wikipedia</td>\n",
       "      <td>Võro</td>\n",
       "      <td>fiu is the ISO code for the Finno-Ugric langua...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>ksh</td>\n",
       "      <td>none</td>\n",
       "      <td>Ripuarian Wikipedia</td>\n",
       "      <td>Ripuarian</td>\n",
       "      <td>ksh is the ISO code for the Colognian dialect,...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>map-bms</td>\n",
       "      <td>none</td>\n",
       "      <td>Banyumasan Wikipedia</td>\n",
       "      <td>Banyumasan</td>\n",
       "      <td>map is the ISO code for the Austronesian langu...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>ms</td>\n",
       "      <td>ms, may, msa</td>\n",
       "      <td>Malay Wikipedia</td>\n",
       "      <td>Malay</td>\n",
       "      <td>ms, may and msa are the ISO codes for the Mala...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>nds-nl</td>\n",
       "      <td>multiple</td>\n",
       "      <td>Dutch Low Saxon Wikipedia</td>\n",
       "      <td>Dutch Low Saxon</td>\n",
       "      <td>nds is the ISO code for Low German, restricted...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>no</td>\n",
       "      <td>nb, nob</td>\n",
       "      <td>Norwegian Wikipedia</td>\n",
       "      <td>Norwegian (Bokmål)</td>\n",
       "      <td>no and nor are the ISO codes for Norwegian in ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>nrm</td>\n",
       "      <td>nrf</td>\n",
       "      <td>Norman Wikipedia</td>\n",
       "      <td>Norman</td>\n",
       "      <td>nrf is the ISO code for the Guernésiais and Jè...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>roa-rup</td>\n",
       "      <td>rup</td>\n",
       "      <td>Aromanian Wikipedia</td>\n",
       "      <td>Aromanian</td>\n",
       "      <td>roa is the ISO code for the Romance languages.</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>roa-tara</td>\n",
       "      <td>none</td>\n",
       "      <td>Tarantino Wikipedia</td>\n",
       "      <td>Tarantino</td>\n",
       "      <td>As above, like with Aromanian, while nap is th...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>simple</td>\n",
       "      <td>none</td>\n",
       "      <td>Simple English Wikipedia</td>\n",
       "      <td>Simple English</td>\n",
       "      <td>en-simple is the IETF BCP 47 language tag for ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>sq</td>\n",
       "      <td>sq, sqi</td>\n",
       "      <td>Albanian Wikipedia</td>\n",
       "      <td>Albanian</td>\n",
       "      <td>sq and sqi are the ISO codes for the Albanian ...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>zh-classical</td>\n",
       "      <td>lzh</td>\n",
       "      <td>Classical Chinese Wikipedia</td>\n",
       "      <td>Classical Chinese</td>\n",
       "      <td>zh is the ISO code for Chinese in general.</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>zh-min-nan</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Southern Min Wikipedia</td>\n",
       "      <td>Southern Min</td>\n",
       "      <td>As above, like with Cantonese and Classical Ch...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>zh-yue</td>\n",
       "      <td>yue</td>\n",
       "      <td>Cantonese Wikipedia</td>\n",
       "      <td>Cantonese</td>\n",
       "      <td>As above, like with Cantonese and Southern Min.</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "           Codes                                 WP edition  \\\n",
       "         WP code  ISO 639 code                   WP edition   \n",
       "0            als           gsw          Alemannic Wikipedia   \n",
       "1        bat-smg           sgs         Samogitian Wikipedia   \n",
       "2             bh       bh, bih           Bhojpuri Wikipedia   \n",
       "3        cbk-zam          none          Chavacano Wikipedia   \n",
       "4        fiu-vro           vro               Võro Wikipedia   \n",
       "5            ksh          none          Ripuarian Wikipedia   \n",
       "6        map-bms          none         Banyumasan Wikipedia   \n",
       "7             ms  ms, may, msa              Malay Wikipedia   \n",
       "8         nds-nl      multiple    Dutch Low Saxon Wikipedia   \n",
       "9             no       nb, nob          Norwegian Wikipedia   \n",
       "10           nrm           nrf             Norman Wikipedia   \n",
       "11       roa-rup           rup          Aromanian Wikipedia   \n",
       "12      roa-tara          none          Tarantino Wikipedia   \n",
       "13        simple          none     Simple English Wikipedia   \n",
       "14            sq       sq, sqi           Albanian Wikipedia   \n",
       "15  zh-classical           lzh  Classical Chinese Wikipedia   \n",
       "16    zh-min-nan           NaN       Southern Min Wikipedia   \n",
       "17        zh-yue           yue          Cantonese Wikipedia   \n",
       "\n",
       "               Language                                              Notes  \n",
       "               Language                                              Notes  \n",
       "0      Alemannic German  als is the ISO code for Tosk Albanian. The Ale...  \n",
       "1            Samogitian  bat is the ISO code for the Baltic languages w...  \n",
       "2     Bihari (Bhojpuri)  bh and bih are the ISO codes for the Bihari ma...  \n",
       "3   Zamboanga Chavacano  cbk is the ISO code for Chavacano while zam is...  \n",
       "4                  Võro  fiu is the ISO code for the Finno-Ugric langua...  \n",
       "5             Ripuarian  ksh is the ISO code for the Colognian dialect,...  \n",
       "6            Banyumasan  map is the ISO code for the Austronesian langu...  \n",
       "7                 Malay  ms, may and msa are the ISO codes for the Mala...  \n",
       "8       Dutch Low Saxon  nds is the ISO code for Low German, restricted...  \n",
       "9    Norwegian (Bokmål)  no and nor are the ISO codes for Norwegian in ...  \n",
       "10               Norman  nrf is the ISO code for the Guernésiais and Jè...  \n",
       "11            Aromanian     roa is the ISO code for the Romance languages.  \n",
       "12            Tarantino  As above, like with Aromanian, while nap is th...  \n",
       "13       Simple English  en-simple is the IETF BCP 47 language tag for ...  \n",
       "14             Albanian  sq and sqi are the ISO codes for the Albanian ...  \n",
       "15    Classical Chinese         zh is the ISO code for Chinese in general.  \n",
       "16         Southern Min  As above, like with Cantonese and Classical Ch...  \n",
       "17            Cantonese    As above, like with Cantonese and Southern Min.  "
      ]
     },
     "execution_count": 231,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ns_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 228,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Wikipedia name in English</th>\n",
       "      <th>Wikipedia namein native language</th>\n",
       "      <th>Language</th>\n",
       "      <th>Script (ISO15924 code)</th>\n",
       "      <th>WPcode</th>\n",
       "      <th>Activeregisteredusers</th>\n",
       "      <th>Launch date</th>\n",
       "      <th>Closure date(if applicable)</th>\n",
       "      <th>Logo</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>English Wikipedia</td>\n",
       "      <td>English Wikipedia</td>\n",
       "      <td>English</td>\n",
       "      <td>Latn</td>\n",
       "      <td>en</td>\n",
       "      <td>123321</td>\n",
       "      <td>15 January 2001</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>French Wikipedia</td>\n",
       "      <td>Wikipédia en français</td>\n",
       "      <td>French</td>\n",
       "      <td>Latn</td>\n",
       "      <td>fr</td>\n",
       "      <td>18526</td>\n",
       "      <td>23 March 2001</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>German Wikipedia</td>\n",
       "      <td>Deutschsprachige Wikipedia</td>\n",
       "      <td>German</td>\n",
       "      <td>Latn</td>\n",
       "      <td>de</td>\n",
       "      <td>17653</td>\n",
       "      <td>16 March 2001</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Spanish Wikipedia</td>\n",
       "      <td>Wikipedia en español</td>\n",
       "      <td>Spanish</td>\n",
       "      <td>Latn</td>\n",
       "      <td>es</td>\n",
       "      <td>15351</td>\n",
       "      <td>20 May 2001</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Japanese Wikipedia</td>\n",
       "      <td>ウィキペディア日本語版(Wikipedia nihongo-ban)</td>\n",
       "      <td>Japanese</td>\n",
       "      <td>Jpan</td>\n",
       "      <td>ja</td>\n",
       "      <td>14276</td>\n",
       "      <td>20 May 2001</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>333</th>\n",
       "      <td>Test2 Wikipedia</td>\n",
       "      <td>Test2 Wikipedia</td>\n",
       "      <td>English</td>\n",
       "      <td>Latn</td>\n",
       "      <td>test2</td>\n",
       "      <td>0</td>\n",
       "      <td>Unknown date</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>334</th>\n",
       "      <td>Toki Pona Wikipedia (deleted)</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Toki Pona</td>\n",
       "      <td>Latn</td>\n",
       "      <td>tok (deleted)</td>\n",
       "      <td>0</td>\n",
       "      <td>Unknown date</td>\n",
       "      <td>Closure: 2008Deletion: March 24, 2009</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>335</th>\n",
       "      <td>Wikipedia 10 (closed)</td>\n",
       "      <td>Wikipedia 10</td>\n",
       "      <td>English</td>\n",
       "      <td>Latn</td>\n",
       "      <td>ten (closed)</td>\n",
       "      <td>0</td>\n",
       "      <td>Unknown date</td>\n",
       "      <td>Unknown date</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>336</th>\n",
       "      <td>Moldovan Wikipedia (deleted)</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Romanian (Moldovan)</td>\n",
       "      <td>Cyrl</td>\n",
       "      <td>mo (deleted)</td>\n",
       "      <td>-1</td>\n",
       "      <td>Unknown date</td>\n",
       "      <td>Closure: November 21, 2006Deletion: November 2...</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>337</th>\n",
       "      <td>Nostalgia Wikipedia</td>\n",
       "      <td>Nostalgia Wikipedia</td>\n",
       "      <td>English</td>\n",
       "      <td>Latn</td>\n",
       "      <td>nostalgia</td>\n",
       "      <td>-1</td>\n",
       "      <td>Unknown date</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>338 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         Wikipedia name in English    Wikipedia namein native language  \\\n",
       "0                English Wikipedia                   English Wikipedia   \n",
       "1                 French Wikipedia               Wikipédia en français   \n",
       "2                 German Wikipedia          Deutschsprachige Wikipedia   \n",
       "3                Spanish Wikipedia                Wikipedia en español   \n",
       "4               Japanese Wikipedia  ウィキペディア日本語版(Wikipedia nihongo-ban)   \n",
       "..                             ...                                 ...   \n",
       "333                Test2 Wikipedia                     Test2 Wikipedia   \n",
       "334  Toki Pona Wikipedia (deleted)                                 NaN   \n",
       "335          Wikipedia 10 (closed)                        Wikipedia 10   \n",
       "336   Moldovan Wikipedia (deleted)                                 NaN   \n",
       "337            Nostalgia Wikipedia                 Nostalgia Wikipedia   \n",
       "\n",
       "                Language Script (ISO15924 code)         WPcode  \\\n",
       "0                English                   Latn             en   \n",
       "1                 French                   Latn             fr   \n",
       "2                 German                   Latn             de   \n",
       "3                Spanish                   Latn             es   \n",
       "4               Japanese                   Jpan             ja   \n",
       "..                   ...                    ...            ...   \n",
       "333              English                   Latn          test2   \n",
       "334            Toki Pona                   Latn  tok (deleted)   \n",
       "335              English                   Latn   ten (closed)   \n",
       "336  Romanian (Moldovan)                   Cyrl   mo (deleted)   \n",
       "337              English                   Latn      nostalgia   \n",
       "\n",
       "     Activeregisteredusers      Launch date  \\\n",
       "0                   123321  15 January 2001   \n",
       "1                    18526    23 March 2001   \n",
       "2                    17653    16 March 2001   \n",
       "3                    15351      20 May 2001   \n",
       "4                    14276      20 May 2001   \n",
       "..                     ...              ...   \n",
       "333                      0     Unknown date   \n",
       "334                      0     Unknown date   \n",
       "335                      0     Unknown date   \n",
       "336                     -1     Unknown date   \n",
       "337                     -1     Unknown date   \n",
       "\n",
       "                           Closure date(if applicable)  Logo  \n",
       "0                                                  NaN   NaN  \n",
       "1                                                  NaN   NaN  \n",
       "2                                                  NaN   NaN  \n",
       "3                                                  NaN   NaN  \n",
       "4                                                  NaN   NaN  \n",
       "..                                                 ...   ...  \n",
       "333                                                NaN   NaN  \n",
       "334              Closure: 2008Deletion: March 24, 2009   NaN  \n",
       "335                                       Unknown date   NaN  \n",
       "336  Closure: November 21, 2006Deletion: November 2...   NaN  \n",
       "337                                                NaN   NaN  \n",
       "\n",
       "[338 rows x 9 columns]"
      ]
     },
     "execution_count": 228,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "basic_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 229,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Language</th>\n",
       "      <th>Language (local)</th>\n",
       "      <th>Wiki</th>\n",
       "      <th>Articles</th>\n",
       "      <th>Total pages</th>\n",
       "      <th>Edits</th>\n",
       "      <th>Admins</th>\n",
       "      <th>Users</th>\n",
       "      <th>Active users</th>\n",
       "      <th>Files</th>\n",
       "      <th>Depth</th>\n",
       "      <th>Percentage</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>English</td>\n",
       "      <td>English</td>\n",
       "      <td>en</td>\n",
       "      <td>6659652</td>\n",
       "      <td>58228872</td>\n",
       "      <td>1152117845</td>\n",
       "      <td>906</td>\n",
       "      <td>45599465</td>\n",
       "      <td>123321</td>\n",
       "      <td>903628</td>\n",
       "      <td>1186.41</td>\n",
       "      <td>10.89%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Cebuano</td>\n",
       "      <td>Cebuano</td>\n",
       "      <td>ceb</td>\n",
       "      <td>6123353</td>\n",
       "      <td>11226408</td>\n",
       "      <td>35003658</td>\n",
       "      <td>5</td>\n",
       "      <td>103162</td>\n",
       "      <td>174</td>\n",
       "      <td>0</td>\n",
       "      <td>2.17</td>\n",
       "      <td>10.01%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>German</td>\n",
       "      <td>Deutsch</td>\n",
       "      <td>de</td>\n",
       "      <td>2803309</td>\n",
       "      <td>7736194</td>\n",
       "      <td>232459469</td>\n",
       "      <td>181</td>\n",
       "      <td>4153396</td>\n",
       "      <td>17653</td>\n",
       "      <td>127636</td>\n",
       "      <td>93.04</td>\n",
       "      <td>4.58%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Swedish</td>\n",
       "      <td>svenska</td>\n",
       "      <td>sv</td>\n",
       "      <td>2563758</td>\n",
       "      <td>6171913</td>\n",
       "      <td>52819681</td>\n",
       "      <td>67</td>\n",
       "      <td>866999</td>\n",
       "      <td>2110</td>\n",
       "      <td>0</td>\n",
       "      <td>16.95</td>\n",
       "      <td>4.19%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>French</td>\n",
       "      <td>français</td>\n",
       "      <td>fr</td>\n",
       "      <td>2524224</td>\n",
       "      <td>12579115</td>\n",
       "      <td>204102514</td>\n",
       "      <td>151</td>\n",
       "      <td>4665044</td>\n",
       "      <td>18526</td>\n",
       "      <td>70944</td>\n",
       "      <td>257.45</td>\n",
       "      <td>4.13%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>326</th>\n",
       "      <td>Afar (closed)</td>\n",
       "      <td>Qafár af</td>\n",
       "      <td>aa</td>\n",
       "      <td>0</td>\n",
       "      <td>509</td>\n",
       "      <td>4685</td>\n",
       "      <td>1</td>\n",
       "      <td>4065</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>——</td>\n",
       "      <td>0%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>327</th>\n",
       "      <td>Akan</td>\n",
       "      <td>Akan</td>\n",
       "      <td>ak</td>\n",
       "      <td>0</td>\n",
       "      <td>1709</td>\n",
       "      <td>29870</td>\n",
       "      <td>1</td>\n",
       "      <td>13690</td>\n",
       "      <td>14</td>\n",
       "      <td>0</td>\n",
       "      <td>——</td>\n",
       "      <td>0%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>328</th>\n",
       "      <td>Herero (closed)</td>\n",
       "      <td>Otsiherero</td>\n",
       "      <td>hz</td>\n",
       "      <td>0</td>\n",
       "      <td>176</td>\n",
       "      <td>4483</td>\n",
       "      <td>1</td>\n",
       "      <td>3763</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>——</td>\n",
       "      <td>0%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>329</th>\n",
       "      <td>Kanuri (closed)</td>\n",
       "      <td>kanuri</td>\n",
       "      <td>kr</td>\n",
       "      <td>0</td>\n",
       "      <td>162</td>\n",
       "      <td>4641</td>\n",
       "      <td>1</td>\n",
       "      <td>5466</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>——</td>\n",
       "      <td>0%</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>330</th>\n",
       "      <td>Nauruan (closed)</td>\n",
       "      <td>Dorerin Naoero</td>\n",
       "      <td>na</td>\n",
       "      <td>0</td>\n",
       "      <td>1737</td>\n",
       "      <td>89908</td>\n",
       "      <td>1</td>\n",
       "      <td>12085</td>\n",
       "      <td>8</td>\n",
       "      <td>0</td>\n",
       "      <td>——</td>\n",
       "      <td>0%</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>331 rows × 12 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "             Language Language (local) Wiki  Articles  Total pages  \\\n",
       "0             English          English   en   6659652     58228872   \n",
       "1             Cebuano          Cebuano  ceb   6123353     11226408   \n",
       "2              German          Deutsch   de   2803309      7736194   \n",
       "3             Swedish          svenska   sv   2563758      6171913   \n",
       "4              French         français   fr   2524224     12579115   \n",
       "..                ...              ...  ...       ...          ...   \n",
       "326     Afar (closed)         Qafár af   aa         0          509   \n",
       "327              Akan             Akan   ak         0         1709   \n",
       "328   Herero (closed)       Otsiherero   hz         0          176   \n",
       "329   Kanuri (closed)           kanuri   kr         0          162   \n",
       "330  Nauruan (closed)   Dorerin Naoero   na         0         1737   \n",
       "\n",
       "          Edits  Admins     Users  Active users   Files    Depth Percentage  \n",
       "0    1152117845     906  45599465        123321  903628  1186.41     10.89%  \n",
       "1      35003658       5    103162           174       0     2.17     10.01%  \n",
       "2     232459469     181   4153396         17653  127636    93.04      4.58%  \n",
       "3      52819681      67    866999          2110       0    16.95      4.19%  \n",
       "4     204102514     151   4665044         18526   70944   257.45      4.13%  \n",
       "..          ...     ...       ...           ...     ...      ...        ...  \n",
       "326        4685       1      4065             1       0       ——         0%  \n",
       "327       29870       1     13690            14       0       ——         0%  \n",
       "328        4483       1      3763             1       0       ——         0%  \n",
       "329        4641       1      5466             1       0       ——         0%  \n",
       "330       89908       1     12085             8       0       ——         0%  \n",
       "\n",
       "[331 rows x 12 columns]"
      ]
     },
     "execution_count": 229,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "detail_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 235,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>wiki</th>\n",
       "      <th>lang</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>als</td>\n",
       "      <td>Alemannic German</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>bat-smg</td>\n",
       "      <td>Samogitian</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>bh</td>\n",
       "      <td>Bihari (Bhojpuri)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>cbk-zam</td>\n",
       "      <td>Zamboanga Chavacano</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>fiu-vro</td>\n",
       "      <td>Võro</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>ksh</td>\n",
       "      <td>Ripuarian</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>map-bms</td>\n",
       "      <td>Banyumasan</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>ms</td>\n",
       "      <td>Malay</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>nds-nl</td>\n",
       "      <td>Dutch Low Saxon</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>no</td>\n",
       "      <td>Norwegian (Bokmål)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>nrm</td>\n",
       "      <td>Norman</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>roa-rup</td>\n",
       "      <td>Aromanian</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>roa-tara</td>\n",
       "      <td>Tarantino</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>simple</td>\n",
       "      <td>Simple English</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>sq</td>\n",
       "      <td>Albanian</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>zh-classical</td>\n",
       "      <td>Classical Chinese</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>zh-min-nan</td>\n",
       "      <td>Southern Min</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>zh-yue</td>\n",
       "      <td>Cantonese</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            wiki                 lang\n",
       "0            als     Alemannic German\n",
       "1        bat-smg           Samogitian\n",
       "2             bh    Bihari (Bhojpuri)\n",
       "3        cbk-zam  Zamboanga Chavacano\n",
       "4        fiu-vro                 Võro\n",
       "5            ksh            Ripuarian\n",
       "6        map-bms           Banyumasan\n",
       "7             ms                Malay\n",
       "8         nds-nl      Dutch Low Saxon\n",
       "9             no   Norwegian (Bokmål)\n",
       "10           nrm               Norman\n",
       "11       roa-rup            Aromanian\n",
       "12      roa-tara            Tarantino\n",
       "13        simple       Simple English\n",
       "14            sq             Albanian\n",
       "15  zh-classical    Classical Chinese\n",
       "16    zh-min-nan         Southern Min\n",
       "17        zh-yue            Cantonese"
      ]
     },
     "execution_count": 235,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fns_df = ns_df.loc[:,[('Codes', 'WP code'),('Language', 'Language')]]\n",
    "fns_df.columns = ['wiki', 'lang']\n",
    "fns_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 237,
   "metadata": {},
   "outputs": [],
   "source": [
    "fbs_df = basic_df.loc[:,['WPcode', 'Language']]\n",
    "fbs_df.columns = ['wiki', 'lang']\n",
    "fbs_df['wiki'] = fbs_df['wiki'].apply(lambda x: x.split('(')[0].strip())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 238,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>wiki</th>\n",
       "      <th>lang</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>en</td>\n",
       "      <td>English</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>ceb</td>\n",
       "      <td>Cebuano</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>de</td>\n",
       "      <td>German</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>sv</td>\n",
       "      <td>Swedish</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>fr</td>\n",
       "      <td>French</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>326</th>\n",
       "      <td>aa</td>\n",
       "      <td>Afar (closed)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>327</th>\n",
       "      <td>ak</td>\n",
       "      <td>Akan</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>328</th>\n",
       "      <td>hz</td>\n",
       "      <td>Herero (closed)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>329</th>\n",
       "      <td>kr</td>\n",
       "      <td>Kanuri (closed)</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>330</th>\n",
       "      <td>na</td>\n",
       "      <td>Nauruan (closed)</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>331 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    wiki              lang\n",
       "0     en           English\n",
       "1    ceb           Cebuano\n",
       "2     de            German\n",
       "3     sv           Swedish\n",
       "4     fr            French\n",
       "..   ...               ...\n",
       "326   aa     Afar (closed)\n",
       "327   ak              Akan\n",
       "328   hz   Herero (closed)\n",
       "329   kr   Kanuri (closed)\n",
       "330   na  Nauruan (closed)\n",
       "\n",
       "[331 rows x 2 columns]"
      ]
     },
     "execution_count": 238,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fd_df = detail_df.loc[:,['Wiki', 'Language']]\n",
    "fd_df.columns = ['wiki', 'lang']\n",
    "fd_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 242,
   "metadata": {},
   "outputs": [],
   "source": [
    "pd.concat([fns_df, fbs_df, fd_df]).to_csv('wiki.csv', index=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 243,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0          als\n",
       "1      bat-smg\n",
       "2           bh\n",
       "3      cbk-zam\n",
       "4      fiu-vro\n",
       "        ...   \n",
       "326         aa\n",
       "327         ak\n",
       "328         hz\n",
       "329         kr\n",
       "330         na\n",
       "Name: wiki, Length: 687, dtype: object"
      ]
     },
     "execution_count": 243,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.concat([fns_df, fbs_df, fd_df])['wiki']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 244,
   "metadata": {
    "scrolled": true,
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "als\n",
      "bat-smg\n",
      "bh\n",
      "cbk-zam\n",
      "fiu-vro\n",
      "ksh\n",
      "map-bms\n",
      "msa\n",
      "nds-nl\n",
      "nor\n",
      "nrm\n",
      "roa-rup\n",
      "roa-tara\n",
      "simple\n",
      "sqi\n",
      "zh-classical\n",
      "zh-min-nan\n",
      "zh-yue\n",
      "eng\n",
      "fra\n",
      "deu\n",
      "spa\n",
      "jpn\n",
      "rus\n",
      "por\n",
      "ita\n",
      "zho\n",
      "fas\n",
      "ara\n",
      "pol\n",
      "nld\n",
      "ukr\n",
      "heb\n",
      "tur\n",
      "ind\n",
      "ces\n",
      "swe\n",
      "vie\n",
      "fin\n",
      "hun\n",
      "kor\n",
      "simple\n",
      "cat\n",
      "hin\n",
      "nor\n",
      "tha\n",
      "ron\n",
      "srp\n",
      "ell\n",
      "ben\n",
      "dan\n",
      "est\n",
      "bul\n",
      "aze\n",
      "eus\n",
      "slk\n",
      "msa\n",
      "uzb\n",
      "hrv\n",
      "hye\n",
      "slv\n",
      "lit\n",
      "kaz\n",
      "epo\n",
      "zh-yue\n",
      "lav\n",
      "tam\n",
      "sqi\n",
      "urd\n",
      "glg\n",
      "mal\n",
      "kat\n",
      "bel\n",
      "mkd\n",
      "arz\n",
      "tel\n",
      "afr\n",
      "bos\n",
      "tgl\n",
      "swa\n",
      "sh\n",
      "ceb\n",
      "mar\n",
      "ckb\n",
      "isl\n",
      "nno\n",
      "lat\n",
      "mya\n",
      "asm\n",
      "be-tarask\n",
      "oci\n",
      "pan\n",
      "ibo\n",
      "kan\n",
      "cym\n",
      "mon\n",
      "hau\n",
      "ast\n",
      "tat\n",
      "azb\n",
      "fry\n",
      "bak\n",
      "sin\n",
      "yor\n",
      "nep\n",
      "bre\n",
      "zh-min-nan\n",
      "als\n",
      "kur\n",
      "kir\n",
      "som\n",
      "sco\n",
      "gle\n",
      "jav\n",
      "war\n",
      "hat\n",
      "ary\n",
      "bar\n",
      "arg\n",
      "tgk\n",
      "ltz\n",
      "pnb\n",
      "guj\n",
      "khm\n",
      "lmo\n",
      "ido\n",
      "zh-classical\n",
      "sun\n",
      "nds\n",
      "amh\n",
      "ori\n",
      "kaa\n",
      "mlg\n",
      "san\n",
      "szl\n",
      "wuu\n",
      "hif\n",
      "que\n",
      "chv\n",
      "che\n",
      "ang\n",
      "tyv\n",
      "yid\n",
      "pus\n",
      "scn\n",
      "vec\n",
      "vol\n",
      "pms\n",
      "min\n",
      "bh\n",
      "zul\n",
      "dag\n",
      "hyw\n",
      "sah\n",
      "bcl\n",
      "kin\n",
      "twi\n",
      "lld\n",
      "ile\n",
      "tuk\n",
      "snd\n",
      "srd\n",
      "mzn\n",
      "rue\n",
      "ina\n",
      "lao\n",
      "mlt\n",
      "nds-nl\n",
      "sat\n",
      "xmf\n",
      "run\n",
      "shi\n",
      "wln\n",
      "crh\n",
      "mai\n",
      "fao\n",
      "lim\n",
      "frr\n",
      "fiu-vro\n",
      "uig\n",
      "cos\n",
      "nap\n",
      "sna\n",
      "tsn\n",
      "ban\n",
      "bjn\n",
      "oss\n",
      "eml\n",
      "avk\n",
      "map-bms\n",
      "sme\n",
      "gla\n",
      "hsb\n",
      "aym\n",
      "lij\n",
      "roh\n",
      "ace\n",
      "grn\n",
      "chr\n",
      "cor\n",
      "lfn\n",
      "diq\n",
      "abk\n",
      "roa-rup\n",
      "ful\n",
      "hak\n",
      "kab\n",
      "pam\n",
      "dsb\n",
      "pcd\n",
      "bod\n",
      "zea\n",
      "mhr\n",
      "bat-smg\n",
      "udm\n",
      "cre\n",
      "cdo\n",
      "trv\n",
      "ssw\n",
      "vls\n",
      "lad\n",
      "kom\n",
      "vep\n",
      "gor\n",
      "haw\n",
      "ilo\n",
      "ipk\n",
      "mri\n",
      "tet\n",
      "xal\n",
      "csb\n",
      "chy\n",
      "frp\n",
      "gan\n",
      "mad\n",
      "pih\n",
      "chu\n",
      "pdc\n",
      "ext\n",
      "smn\n",
      "ltg\n",
      "lez\n",
      "ami\n",
      "ava\n",
      "glk\n",
      "mdf\n",
      "nah\n",
      "new\n",
      "nso\n",
      "orm\n",
      "skr\n",
      "tir\n",
      "ton\n",
      "xho\n",
      "inh\n",
      "tcy\n",
      "gag\n",
      "jbo\n",
      "mni\n",
      "pcm\n",
      "smo\n",
      "tum\n",
      "ven\n",
      "mrj\n",
      "ady\n",
      "fur\n",
      "gcr\n",
      "kbd\n",
      "lin\n",
      "mnw\n",
      "nav\n",
      "blk\n",
      "pfl\n",
      "pap\n",
      "sot\n",
      "roa-tara\n",
      "tpi\n",
      "myv\n",
      "mwl\n",
      "bxr\n",
      "ewe\n",
      "olo\n",
      "nqo\n",
      "nia\n",
      "pag\n",
      "gom\n",
      "szy\n",
      "alt\n",
      "aka\n",
      "tay\n",
      "bpy\n",
      "bug\n",
      "got\n",
      "guw\n",
      "jam\n",
      "lug\n",
      "glv\n",
      "nrm\n",
      "nov\n",
      "sag\n",
      "shn\n",
      "srn\n",
      "tso\n",
      "zha\n",
      "kas\n",
      "bis\n",
      "nya\n",
      "kon\n",
      "lbe\n",
      "div\n",
      "tah\n",
      "pnt\n",
      "wol\n",
      "dty\n",
      "pli\n",
      "rmy\n",
      "stq\n",
      "krc\n",
      "ksh\n",
      "atj\n",
      "kal\n",
      "iku\n",
      "koi\n",
      "arc\n",
      "cha\n",
      "cbk-zam\n",
      "kik\n",
      "pwn\n",
      "awa\n",
      "dzo\n",
      "fij\n",
      "kbp\n",
      "bam\n",
      "nau\n",
      "din\n",
      "kcg\n",
      "lrc\n",
      "aar\n",
      "cho\n",
      "her\n",
      "hmo\n",
      "kau\n",
      "kua\n",
      "mah\n",
      "mus\n",
      "ndo\n",
      "iii\n",
      "tlh\n",
      "sep11\n",
      "ru-sib\n",
      "test\n",
      "test2\n",
      "tok\n",
      "ten\n",
      "mo\n",
      "nostalgia\n",
      "eng\n",
      "ceb\n",
      "deu\n",
      "swe\n",
      "fra\n",
      "nld\n",
      "rus\n",
      "spa\n",
      "ita\n",
      "arz\n",
      "pol\n",
      "jpn\n",
      "zho\n",
      "vie\n",
      "war\n",
      "ukr\n",
      "ara\n",
      "por\n",
      "fas\n",
      "cat\n",
      "srp\n",
      "ind\n",
      "kor\n",
      "nor\n",
      "che\n",
      "fin\n",
      "hun\n",
      "ces\n",
      "tur\n",
      "tat\n",
      "sh\n",
      "ron\n",
      "zh-min-nan\n",
      "eus\n",
      "msa\n",
      "epo\n",
      "heb\n",
      "hye\n",
      "dan\n",
      "bul\n",
      "cym\n",
      "slk\n",
      "azb\n",
      "uzb\n",
      "est\n",
      "kaz\n",
      "bel\n",
      "simple\n",
      "min\n",
      "ell\n",
      "hrv\n",
      "lit\n",
      "glg\n",
      "aze\n",
      "urd\n",
      "slv\n",
      "kat\n",
      "nno\n",
      "hin\n",
      "tha\n",
      "tam\n",
      "ben\n",
      "lat\n",
      "mkd\n",
      "ast\n",
      "zh-yue\n",
      "lld\n",
      "lav\n",
      "tgk\n",
      "afr\n",
      "mya\n",
      "mlg\n",
      "mar\n",
      "bos\n",
      "sqi\n",
      "oci\n",
      "nds\n",
      "mal\n",
      "tel\n",
      "be-tarask\n",
      "kir\n",
      "bre\n",
      "swa\n",
      "jav\n",
      "new\n",
      "pnb\n",
      "lmo\n",
      "vec\n",
      "hat\n",
      "pms\n",
      "bak\n",
      "ltz\n",
      "sun\n",
      "kur\n",
      "gle\n",
      "szl\n",
      "isl\n",
      "fry\n",
      "chv\n",
      "pan\n",
      "ckb\n",
      "tgl\n",
      "arg\n",
      "wuu\n",
      "diq\n",
      "ido\n",
      "sco\n",
      "vol\n",
      "yor\n",
      "nep\n",
      "ina\n",
      "guj\n",
      "kan\n",
      "als\n",
      "avk\n",
      "bar\n",
      "scn\n",
      "hau\n",
      "crh\n",
      "bpy\n",
      "que\n",
      "nav\n",
      "mon\n",
      "xmf\n",
      "ban\n",
      "sin\n",
      "pus\n",
      "frr\n",
      "bat-smg\n",
      "oss\n",
      "ori\n",
      "sah\n",
      "cdo\n",
      "gla\n",
      "bug\n",
      "mzn\n",
      "yid\n",
      "snd\n",
      "ilo\n",
      "amh\n",
      "ibo\n",
      "nap\n",
      "lim\n",
      "fao\n",
      "gor\n",
      "hsb\n",
      "map-bms\n",
      "mai\n",
      "bcl\n",
      "tum\n",
      "eml\n",
      "shn\n",
      "ace\n",
      "zh-classical\n",
      "san\n",
      "asm\n",
      "wln\n",
      "ile\n",
      "lij\n",
      "zul\n",
      "mhr\n",
      "hyw\n",
      "hif\n",
      "sna\n",
      "mrj\n",
      "bjn\n",
      "mni\n",
      "khm\n",
      "hak\n",
      "som\n",
      "roa-tara\n",
      "pam\n",
      "rue\n",
      "nso\n",
      "bh\n",
      "sat\n",
      "sme\n",
      "mri\n",
      "myv\n",
      "vls\n",
      "nds-nl\n",
      "srd\n",
      "cor\n",
      "vep\n",
      "glk\n",
      "dag\n",
      "tuk\n",
      "kab\n",
      "ary\n",
      "nah\n",
      "gan\n",
      "bod\n",
      "cos\n",
      "fiu-vro\n",
      "abk\n",
      "kin\n",
      "glv\n",
      "uig\n",
      "zea\n",
      "skr\n",
      "frp\n",
      "udm\n",
      "pcd\n",
      "kom\n",
      "csb\n",
      "mlt\n",
      "grn\n",
      "smn\n",
      "aym\n",
      "nrm\n",
      "lez\n",
      "lfn\n",
      "mwl\n",
      "olo\n",
      "stq\n",
      "kas\n",
      "lao\n",
      "ang\n",
      "fur\n",
      "roh\n",
      "lad\n",
      "gom\n",
      "ext\n",
      "koi\n",
      "tyv\n",
      "dsb\n",
      "ava\n",
      "dty\n",
      "lin\n",
      "kaa\n",
      "mdf\n",
      "pap\n",
      "cbk-zam\n",
      "twi\n",
      "div\n",
      "ksh\n",
      "gag\n",
      "bxr\n",
      "pfl\n",
      "lug\n",
      "zha\n",
      "pli\n",
      "szy\n",
      "pag\n",
      "haw\n",
      "awa\n",
      "tay\n",
      "blk\n",
      "inh\n",
      "krc\n",
      "xal\n",
      "pdc\n",
      "ton\n",
      "atj\n",
      "arc\n",
      "tcy\n",
      "mnw\n",
      "jam\n",
      "kbp\n",
      "wol\n",
      "kbd\n",
      "nia\n",
      "shi\n",
      "nov\n",
      "kik\n",
      "nqo\n",
      "bis\n",
      "tpi\n",
      "tet\n",
      "roa-rup\n",
      "jbo\n",
      "xho\n",
      "orm\n",
      "fij\n",
      "kon\n",
      "lbe\n",
      "tah\n",
      "guw\n",
      "chu\n",
      "trv\n",
      "srn\n",
      "smo\n",
      "alt\n",
      "gcr\n",
      "chr\n",
      "tsn\n",
      "ltg\n",
      "mad\n",
      "nya\n",
      "ful\n",
      "sot\n",
      "pih\n",
      "got\n",
      "rmy\n",
      "ewe\n",
      "ami\n",
      "bam\n",
      "ven\n",
      "tso\n",
      "chy\n",
      "pcm\n",
      "ssw\n",
      "run\n",
      "kcg\n",
      "cha\n",
      "ipk\n",
      "pnt\n",
      "ady\n",
      "guc\n",
      "iku\n",
      "gur\n",
      "pwn\n",
      "sag\n",
      "din\n",
      "tir\n",
      "kal\n",
      "dzo\n",
      "cre\n",
      "ndo\n",
      "cho\n",
      "kua\n",
      "mah\n",
      "hmo\n",
      "iii\n",
      "lrc\n",
      "mus\n",
      "aar\n",
      "aka\n",
      "her\n",
      "kau\n",
      "nau\n"
     ]
    }
   ],
   "source": [
    "for lang in pd.concat([fns_df, fbs_df, fd_df])['wiki']:\n",
    "    if len(lang) == 2:\n",
    "        try:\n",
    "            lang = meta_df.loc[meta_df['639-1'] == lang, '639-3'].values[0]\n",
    "        except:\n",
    "            pass\n",
    "    print(lang)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python (env_instruct_align)",
   "language": "python",
   "name": "env-instruct-align"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
